SEB_FE_45(코드스테이츠)/section 2.

TIL] Unit 2. 객체지향프로그래밍(캡슐화, 추상화, 상속 등)

YTReeee 2023. 5. 11. 15:40

SEB_FE_45

Section 2. Unit 2. 객체지향 프로그래밍


객체지향 프로그래밍

객체지향 프로그래밍은 데이터(속성)와 기능(메서드)을 의미하는 코드를 하나의 단위(객체)로 묶으며, 이러한 단위들의 집합으로 프로그램을 표현하는 방식이다.

객체는 한번 만들고 나면, 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지된다.

클래스는 세부 사항(속성)이 들어가지 않은 청사진으로, 세부사항을 입력하면 객체(인스턴스)가 된다.

객체의 속성은 클래스(실체)의 고유한 세부사항(또는 특성)(예. 자동차 -> 브랜드, 모델명, 가격, 색상 등)이며, 구체적인 속성은 특정 클래스를 다른 것들과 구별하여 인식할 수 있게 한다.

객체의 매서드는 해당 클래스의 기능(또는 동작)(예. 자동차 -> 전진, 후진, 조향 등)이다.

캡슐화

객체지향의 특징으로 데이터(속성)와 기능(매서드)를 하나의 단위로 구성하는 것이다.

데이터와 기능이 절차에 따라 작성되지 않았기 때문에 느슨한 결합이라고 한다.

느슨한 결합의 장점은 구현을 수정하기 용이하다는 점이다.

어떤 구현의 원리(또는 데이터(속성))보다는 외부에서의 동작(또는 기능(메서드))만 노출되기 때문에, 디테일한 구현이나 데이터를 숨긴다는 점에서 은닉화의 특징도 갖는다. 은닉화의 특징을 살리면 객체 내 코드 흐름을 건들지 않고도 외부에서의 동작을 수정할 수 있다.

추상화

복잡한 구현 원리를 알지 못하더라도 동작할 수 있도록 인터페이스를 단순화하는 것이다.

예를 들어 자동차의 부품이나 동작원리를 모르더라도 운전을 할 수 있도록 핸들, 엑셀레이터, 브레이크, 기어 등의 인터페이스를 정의하는 것이 추상화의 본질이다.

상속

부모의 재산을 자녀가 상속받는 것과 같이, 어떤 객체가 가지는 데이터(속성)와 동작(메서드)을 다른 객체가 상속받아 사용하는 것을 의미한다.

이는 코드의 적극적인 재사용을 의미하며, 코드의 중복을 제거함으로써 개발 비용을 줄이는데 도움이 된다.

다형성

다양한 형태라는 뜻으로 어떤 객체의 데이터(속성)나 동작(메서드)가 상황에 따라 여러 형태를 가질 수 있는 성질을 의미한다. 자동차를 예를 들면, 운송수단이라는 공통된 속성이 있으나, 역할이나 크기등에 따라 영업용, 일반 승용, 화물용 등으로 나뉘는 것을 의미한다.


출처 : 코드스테이츠 유어클래스 교육자료, 코드스테이츠 블로그, 모던 자바스크립드 Deep Dive