[TIL] 객체 지향 프로그램(OOP)

경두현·2020년 5월 8일
0

TIL

목록 보기
4/11
post-thumbnail

객체 지향 프로그래밍(OOP)

객체 지향 프로그래밍은 컴퓨터 과학에서 전통적인 패러다임이다. 우리가 알고 있는 OOP으 ㅣ개념 중 일부는 1950년대부터 있었지만, 시뮬러 67 (Simula 67)과 스몰토크 (Smalltalk)가 등장하면서 OOP의 형태가 갖춰지기 시작했다.

객체는 데이터와 기능을 논리적으로 묶어 놓은 겁니다. OOP는 우리가 사물을 이해하는 자연스러운 방식을 반영하도록 설계됐습니다. 만약 자동차가 객체라면 그 데이터에는 제조사, 모델, 도어 숫자, 차량번호 등이 있을 겁니다. 그리고 그 기능으로는 가속, 변속, 문 열기, 헤드라이트 켜기 등이 있을 겁니다. 또한, OOP는 사물에 관해 추상적으로 (어떤 자동차), 구체적으로 (특정 자동차) 생각할 수 있게 합니다.

OOP는 클래스를 계층적으로 분류하는 수단도 제공한다. 예를 들어 자동차보다 더 범용적인 운송 수단 클래스가 있다면, 운송 수단 클래스에는 자동차와 마찬가지로 급유나 충전 없이 이동할 수 있는 거리인 범위 프로퍼티가 있겠지만, 자동차와 달리 바퀴는 없을 수도 있다. 이때에 운송 수단을 자동차의 슈퍼클래스 라고 부르고 자동차를 서브클래스 라고 부른다.

-Ethan Brown, 『Learning JavaScript』, 한선용, 한빛미디어(2019), 226p.

OOP의 기본 용어 (자동차를 예시로 한)

클래스(Class) : 어떤 자동차처럼 추상적이고 범용적인 것.
인스턴스(Instance) : 특정 자동차처럼 구체적이고 한정적인 것.
메서드(Method) : 기능
클래스 메서드(Class Method) : 클래스에 속하지만 특정 인스턴스에 묶이지는 않는 기능. 예를 들어 시동을 거는 기능은 클래스 메서드.
생성자(Constructor) : 인스턴스를 새로 만들 때는 생성자가 실행. 생성자객체 인스턴스를 초기화.

객체 지향 프로그래밍(OOP)이란

프로그래밍에서 필요한 데이터를 추상화시켜서 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법.

출처: https://jeong-pro.tistory.com/95 [기본기를 쌓는 정아마추어 코딩블로그]

장점 : 코드의 재사용이 용이, 유지보수가 쉽다, 대형 프로젝트에 적합
단점 : 처리속도가 상대적으로 느림, 객체가 많으면 용량이 커짐, 설계가 어려움

OOP의 요소

캡슐화
데이터의 번들링. 번들링이란 프로그래밍 언어안의 Class에 해당. 해당 Class를 만들고 Class를 통해서 인스턴스를 생성 후, Class에 포함된 변수메소드를 활용.

추상화(정보은닉)
프로그래밍의 세부적인 구현, 코드를 외부로 노출하지 않는 것. 실제로 구현에 필요한 코드는 Class 내부에 구현.

상속
자식 Class부모 Class의 특성과 기능을 그래도 물려받는 것. 우리가 Class를 정의 그 Class를 이용하여 인스턴스를 생성하였으면, 해당 인스턴스Class`의 특성과 기능을 그대로 물려받는 것이다.

다형성
하나의 변수, 또는 함수가 상화에 따라 다른 의미로 해석될 수 있는 것. 같은 부모 Class로 선언되었지만, 하위 Class가 모드 다른 것. 실생활에 예를 들면, 자동차 타이어는 휠의 사이즈 (부모 Class)에 따라 모두 같지만, 회사나 모델 (객체 인스턴스, 하위 Class)에 따라 성능이 다르게 나오는 것.

profile
개발자(진)

0개의 댓글