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

조재일·2023년 4월 6일
0

CS지식

목록 보기
2/6
post-thumbnail

OOP란?

객체 지향 프로그래밍을 의미한다
말 그대로 객체를 중심으로 프로그래밍한다는 의미이며, 객체를 생성해서 그 객체들의 상호작용을 이용해서 코드의 재사용성과 유지보수성을 올려주는 장점이 있다.
이러한 객체 지향 프로그래밍의 특징에 대해 설명하겠다

Class와 Object 그리고 Instance

먼저 Class와 Object, Instance에 대해서 묶어서 설명하겠다

Class란

객체를 만들기위한 틀(template)을 의미한다
Class로 만들어진 Object를 Instance라고 한다

Object란

객체란 특성(properties)와 메서드(method)를 가지고 있는 것을 의미한다.

그렇다면 Instance와 Object의 차이가 무엇인가?

Instance와 Object의 차이는 위의 그림으로 설명할 수 있다
Instance의 개념은 Object가 실제로 메모리에 할당되어서 생성된 것을 의미한다

여기서 {a:2}라는 객체를 변수 b에 할당한 것을 볼 수 있다.
여기서 b는 객체 {a:2}에 대한 instance라고 할 수 있다.

상속이란

상속이란 객체 간의 관게를 구축하는 방법이다.
쉽게 말해서 부모 클래스에서 자식클래스로 method나 properties를 물려주는 것이다.

다형성이란

같은 이름의 메서드나 연산자가 다양한 방식으로 작동할 수 있는 능력을 의미한다.
즉, 데이터 타입에 따라서 다른 결과를 반환하는 것이다
이러한 다형성이라는 능력만 있다면 부모클래스에 있는 메서드를 원하는 부분만 수정하거나 메서드를 여러개 늘리지 않아도 돼서 재 사용성과 유지보수성에 장점을 살릴 수 있다.

이러한 다형성에는 오버로딩오버라이딩 두가지 형태가 있다

오버로딩과 오버라이딩

오버로딩이란

같은 이름의 메서드가 Class안에 여러개가 정의되는 것이다.
하나의 메서드가 여러기능을 구현할 수 있게 되는 것이다

오버라이딩이란

상속관계에 있는 경우 부모 Class의 메서드를 자식클래스에서 다시 재정의 하는 것이다

캡슐화란

캡슐화란 외부의 접근을 차단하고 유지보수를 쉽게 하기 위해 사용하는 능력이다.

위의 캡슐은 어떤 효과가 있는 캡슐이다.
하지만, 겉으로 보기에 캡슐안에 내부상태를 확인 할 수 없다.
이렇게 외부의 접근을 차단하면서 필요한 효과만 주는 것을 캡슐화라고 할 수 있다.

다음과 같이 외부의 접근을 막는 방법에는 여러가지 방법이 사용된다

외부의 접근을 막기위해 접근 제어자를 사용해서 막는 경우가 있다

Getter와 Setter를 사용해서 막는경우가 있다

Getter란
객체의 속성에 접근하는 메서드를 의미한다. 사용자는 해당 메서드만을 사용해서 해당 속성에 접근 할 수 있다.

Setter란
객체의 속성값을 변경하는 메서드를 의미한다. 사용자는 해당 메서드만을 사용해서 속성값을 변경할 수 있다.

내부의 내용을 보여주지 않는 정보은닉화를 사용할 수 있다.

Java같은 private가 지원되는 언어에서는 private 키워드를 사용해서 은닉화할 수 있지만,
js 같은 private가 지원되지 않는 언어에서는 _변수명같은 클로저를 사용할 수 있다


Frame icons created by samlakodad - Flaticon
Method icons created by Freepik - Flaticon
캡슐 아이콘 제작자: SumberRejeki - Flaticon
Pattern icons created by Us and Up - Flaticon
Received icons created by justicon - Flaticon
Book icons created by Freepik - Flaticon
Writing icons created by Freepik - Flaticon

profile
주니어 프론트엔드 개발자 입니다

0개의 댓글