객체지향 프로그래밍
프로그래밍 패러다임
- 명령형: 절차적, 객체지향
- 선언형:함수형, 논리형
1. 객체지향 프로그래밍(Object-Oriented Programming, OOP)
- 현실 세계의 개체(Entity)를 기계의 부품처럼 하나의 객체로 만들어, 기계적인 부품들을 조립하여 제품을 만들 듯이 소프트웨어를 개발할 때도 객체들을 조립해서 프로그램을 작성할 수 있도록 한 프로그래밍 기법
1.1 OOP 장, 단점
- 상속을 통한 재사용과 시스템의 확장이 용이하고, 코드의 재활용성이 높음
- 사용자와 개발자 사이의 이해를 쉽게 해 주고, 대형 프로그램의 작성이 용이함
- 프로그래밍 구현을 지원해 주는 정형화된 분석 및 설계 방법이 없음
- 구현 시 처리 시간이 지연됨 → 실행 속도가 느림
1.2 OOP 종류
C는 절차적 프로그래밍이므로 유의
(1) C++
- C언어에 객체지향 개념을 더한 언어( C에 상위 호환성)
- 모든 문제를 객체로 모델링하여 표현함
- 표준규격 복잡
(2) C#
- Microsoft에서 개발한 객체지향 프로그래밍 언어
- C++과 JAVA의 문법과 비슷함
- JAVA와 달리 불안전 코드(Unsafe Code)와 같은 기술을 통해
플랫폼 간 상호 운용성 확보
(3) JAVA
- 객체지향 염두하고 만든 언어
- 컴파일 필요 ( 생성된 Class 파일을 가상 머신을 통해 실행)
- 분산 네트워크 환경에 적용이 가능하며, 멀티스레드 기능을 제공하므로 여러 작업을 동시에 처리할 수 있음
- 운영체제 및 하드웨어에 독립적이며, 이식성,보안성이 강함
- 캡슐화가 가능하고 재사용성이 높음
(4) Delphi
-기본적인 문법은 파스칼 문법에 여러 기능들이 추가되어 존재
- Windows 운영체제에서 모든 부분을 프로그래밍할 수 있는 언어
- 높은 생산성과 간결한 코드가 대표적인 장점
(5) Smalltalk
- 1세대 객체지향 프로그래밍 언어
- 최초로 GUI를 제공한 언어
1.3 기본 구성 요소
(1) 객체(Object)
- 독립적으로 식별 가능한 이름을 갖고 있음
- 객체가 가질 수 있는 조건인 상태(State)는 일반적으로 시간에 따라 변함
- 객체와 객체는 상호 연관성에 의한 관계가 형성됨
- 객체는 일정한 기억 장소를 갖고 있음
(2) 클래스(Class)
- 공통된 속성과 연산(행위)을 갖는 객체의 집합
- 객체지향 프로그램에서 데이터를 추상화하는 단위
- 각각의 객체들이 갖는 속성과 연산(Method)을 정의하고 있는 틀
- 슈퍼 클래스(Super Class): 특정 클래스의 상위(부모) 클래스
- 서브 클래스(Sub Class): 특정 클래스의 하위(자식) 클래스
(3) 인스턴스(Instance)
- 클래스에 속한 각각의 객체
- 클래스로부터 새로운 객체를 생성하는 것을 인스턴스화(Instantiation)라고 함
(4) 메서드(Method)
- 클래스로부터 생성된 객체를 사용하는 방법
- 객체가 반응할 수 있는 메시지의 집합을 행위
- 전통적 시스템의 함수(Function)/프로시저(Procedure)에 해당하는 연산
(5) 메시지(Message)
- 객체에게 어떤 행위를 하도록 지시하기 위한 방법
1.4 객체지향 프로그래밍 특징 e.g. 캡상다추정
(1) 캡슐화(Encapsulation) 22년 2회 기출
- 데이터(속성)와 데이터를 처리하는 연산을 하나로 묶는 것
- 캡슐화된 객체의 세부 내용이 외부에 은폐(정보 은닉)되어, 변경이 발생할 때 오류의 파급효과가 적음
- 캡슐화된 객체들은 재사용이 용이함
정보 은닉(Information Hiding)
캡슐화에서 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것
(2) 상속성(Inheritance)
이미 정의된 상위 클래스(부모 클래스)의 모든 속성과 연산을 하위 클래스(자식 클래스)가 물려받는 것
(3) 다형성(Polymorphism)
메시지에 의해 객체(클래스)가 연산을 수행하게 될 때, 하나의 메시지에 대해 각 객체(클래스)가 가지고 있는 고유의 방법(특성)으로 응답할 수 있는 능력
(4) 추상화(Abstraction)
- 불필요한 부분은 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화, 모델화 하는 것
- 데이터의 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 개념
'Challenges > 정보처리기사' 카테고리의 다른 글
[정보처리기사]4.프로그래밍 언어 활용/SW 운영체제의 활용/운영체제의 개념 (0) | 2022.07.03 |
---|---|
[정보처리기사]4.프로그래밍 언어 활용/프로그래밍 언어/스크립트 언어 (0) | 2022.07.03 |
[정보처리기사]4.프로그래밍 언어 활용/프로그래밍 언어/절차적 프로그래밍 (0) | 2022.07.03 |
[정보처리기사]4.프로그래밍 언어 활용/프로그래밍 언어/선언형 프로그래밍 (0) | 2022.07.03 |
[정보처리기사]4.프로그래밍 언어 활용/프로그래밍 언어/라이브러리 (0) | 2022.07.03 |