on
객체지향 프로그래밍
객체지향 프로그래밍
728x90
개념정리
객체지향 프로그래밍이란?
자바에 대해 공부한 내용으로 자바의 정석 도서를 참고하였다.
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++이 난이도가 높음
728x90
from http://yuricoding.tistory.com/73 by ccl(A) rewrite - 2021-11-14 23:01:25