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

뜨개발자·2023년 2월 21일
0

WIL

목록 보기
14/14

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

프로그램을 부품(객체)들의 결합으로 구성하고자 하는 프로그래밍 방법

변경이 필요할 때, 필요한 객체만 변경하면 다른 객체에는 영향이 없기 때문에 코드의 변경을 최소화하고 유지보수를 하기에 유리하다.
코드의 재사용성을 높일 수 있다.

객체지향 프로그래밍 원칙

단일 책임 원칙 (SRP)

하나의 클래스는 하나의 책임을 갖는다.
그 책임은 캡슐화 되어야 한다.

개방-폐쇄 원칙 (OCP)

확장에는 열려있고, 수정에는 닫혀있어야 한다.
기존 코드를 유지하면서 기능을 추가할 수 있도록 설계해야 한다.

리스코프 치환 원칙 (LSP)

자식 클래스는 언제든 부모 클래스를 대체할 수 있다.
자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장해야 한다.
부모 클래스의 자리에 자식 클래스를 넣어도 의도대로 움직여야 한다.

인터페이스 분리 원칙 (ISP)

자신이 사용하지 않을 인터페이스는 구현하지 않아야 한다.

의존 역전 원칙 (DIP)

추상화, 인터페이스에 의존해야 한다.
구체적으로 설정된 클래스 등에 의존하지 않아야 한다.

객체지향 프로그래밍의 특징

추상화

공통적인 부분을 미리 모아놓고, 하위에서 개별적으로 갖는 특성들은 객체마다 따로 정의할 수 있도록 하는 것
역할의 정의와 실제 구현을 분리시킨다.

상속

기존 객체의 속성과 기능을 유지하면서도 그보다 더 확장된 하위 객체를 만들 수 있는 특징
클래스들간 공유하는 속성과 기능을 반복적으로 정의할 필요가 없어진다.

다형성

같은 이름이지만 상황에 따라 다른 역할을 수행할 수 있도록 하는 것
오버라이딩은 어떤 클래스를 상속받은 하위 클래스들이 같은 이름의 메소드에 다른 기능을 정의하고 사용하는 것을 말한다. 같은 모양이지만, 다른 역할을 하는 것이다.
오버로딩은 하나의 클래스 안에 같은 이름의 메소드를 여러 개 가질 수 있도록 하는 것이다. 다만 인자의 타입이나 개수 등이 달라 어떤 메소드를 호출하는지 확실히 알 수 있어야 한다.

캡슐화

외부에서 내부의 속성, 기능 등을 알 수 없도록 하는 것
외부에서 내부의 값을 임의로 변경할 수 없도록 보호하는 기능도 하고, 내부의 값이나 동작을 허락하지 않은 방법으로 알아낼 수 없도록 하는 은닉의 역할도 한다.

profile
뜨개질하는 개발자

0개의 댓글