반응형
개념정리
객체지향 프로그래밍이란?
자바에 대해 공부한 내용으로 자바의 정석 도서를 참고하였다.
1. 객체지향 언어의 역사
- 탄생 배경 : 모의실험을 위해 실제 세계와 비슷한 가상 세계를 컴퓨터 속에 구현 하고자 객체지향이론이 필요
- 개념 : 실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다
- 발전 : 상속, 캡슐화, 추상화 개념을 중심으로 점차 구체적으로 발전, 1960년대 중반 객체지향이론을 프로그래밍언어에 적용한 시뮬라(Simula)라는 최초의 객체지향언어 탄생
- 프로그램의 규모가 점점 커지고 사용자들의 요구가 빠르게 변화해가는 상황에 대한 대안으로 객체지향언어를 이용, 입지가 넓혀짐
2. 객체지향 프로그래밍
- 프로그램을 다수의 객체로 만들고, 이들끼리 서로 상호작용하도록 만드는 프로그래밍
- 객체지향 예시 : 컴퓨터의 모든 부품을 적절히 연결하고 조립해서 컴퓨터가 제대로 작동하도록 만드는 것
[객체지향 프로그래밍의 기본 구성요소]
- 클래스(Class) - 같은 종류(또는 문제 해결을 위한)의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형(user defined data type)이라고 할 수 있음. 클래스는 다른 클래스 또는 외부 요소와 독립적으로 생성
- 객체(Object) - 클래스의 인스턴스(실제로 메모리상에 할당된 것). 객체는 자신 고유의 속성(attribute)을 가지며 클래스에서 정의한 행위(behavior)를 수행할 수 있음. 객체의 행위는 클래스에 정의된 행위에 대한 정의를 공유함으로써 메모리를 경제적으로 사용
- 메서드(Method), 메시지(Message) - 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지를 말함. 메서드는 한 객체의 서브루틴(subroutine) 형태로 객체의 속성을 조작하는 데 사용됨. 또 객체 간의 통신은 메시지를 통해 이루어짐
[객체지향 프로그래밍의 특징]
1. 캡슐화
- 데이터와 알고리즘을 하나로 묶어 하나의 캡슐처럼 만드는 것으로 이 특징 때문에 데이터와 코드의 형태를 외부에서 알 수 없음
- 캡슐화되어있지 않은 데이터와 코드는 사용하기 어려움
2. 상속
- 부모가 자식에게 유전자를 물려주듯, 상위 클래스의 모든 것을 하위 클래스가 이어 받는 것
3. 다형성
- 상속과 연관된 개념으로, 하나의 객체가 다른 여러 객체로 재구성되는 것
- 재구성된 객체들이 원 개체와 똑같다고 볼 수는 없음
- 예시 : 자바의 오버로드, 혹은 오버라이드의 다형성
4. 추상화
- 실존하는 객체의 여러 특성 중, 프로그램을 만드는데 필요한(공통적인) 부분만 파악해서 추출하고 필요하지 않은 것은 제거하는 것
[장점]
1. 재사용성
- '상속'이 가능하기 때문에 코드를 재사용할 수 있음
2. 생산성 증가
- 독립된 객체로 이루어져있기 때문에 생산적으로 작업할 수 있고, 유지 및 보수가 용이함
3. 자연스러운 모델링
- 개발자가 생각하는 대로 자연스럽게 구현할 수 있음
[단점]
1. 느린 개발 속도
모든 객체의 역할과 기능을 이해해야 하기 때문에 프로그래밍에 많은 시간이 소요됨
2. 느린 실행 속도
객체지향언어의 처리 속도는 절차지향언어보다 느림
3. 높은 난이도
객체지향언어는 상대적으로 난이도가 높음. 특히 다중 상속이 지원되는 c++이 난이도가 높음
반응형
'개발 하나둘셋 > CS' 카테고리의 다른 글
[네트워크] RESTful 하게 API를 디자인 한다는 것은? (0) | 2021.11.29 |
---|---|
[네트워크] HTTP와 HTTPS의 특징과 차이점 (0) | 2021.11.19 |
[네트워크] REST API와 HTTP 메소드정리 (0) | 2021.11.17 |
[네트워크] 회원가입, 로그인기능 (해시함수 / JWT) (0) | 2021.11.07 |
[네트워크] jinja2, API (0) | 2021.11.07 |