본문 바로가기
Java

객체 지향 3요소 5원칙

by 전재경 2022. 11. 29.

3요소

 

캡슐화(Encapsulation) = 정보 은닉


프로그램 내에서 같은 기능을 목적으로 작성된 코드를 모아서 다른 곳(클래스)에서 안보이게 숨기는 것.
클래스 내에서 사용할 속성은 숨기고(Private), 객체가 수행할 기능은 공개(Public)하는 것을 의미한다.

 

상속(Inheritance) = 재사용 + 확장


클래스 사이에 부모와 자식 클래스가 존재할 수 있다는 뜻.
자식 클래스는 상속받은 부모 클래스의 속성 및 기능을 사용할 수 있다.

 

다형성(Polymorphism) = 사용편의


하나의 객체가 여러 가지 형태를 가질 수 있는 것.
오버라이딩(Overriding)
부모 클래스에 정의되어 있는 메서드를 자식클래스에서 재정의하여 사용하는 것.
오버로딩(Overloading)
같은 이름을 가진 메서드를 인자값의 종류나 개수를 다르게 하여 다른 기능을 구현하도록 정의하는 것.

 


5원칙 (SOLID 원칙)

 

단일 책임 원칙(Single Responsibility Principle)


모든 클래스는 각각 하나의 책임만 가져야 한다. 즉, 특수한 목적을 수행하도록 만든 클래스는 해당 목적 외에 다른 기능을 수행하면 안된다.


개방-폐쇄 원칙(Open Closed Principle)


클래스는 확장에는 열려있고 수정에는 닫혀있어야 한다. 즉, 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계되어야 한다.


리스코프 치환 원칙(Liskov Substitution Principle)


자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다. 즉, 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야한다.


인터페이스 분리 원칙(Interface Segregation Principle)


한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인 인터페이스보다 여러 개의 구체적인 인터페이스가 낫다.


의존 관계 역전 원칙(Dependency Inversion Principle)


의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존해야 한다. 즉, 구체적인 클래스보다는 인터페이스나 추상 클래스와 관계를 맺어야 한다.

'Java' 카테고리의 다른 글

[Java/Spring] 객체지향 프로그래밍 5원칙  (0) 2022.12.08
[Java/Spring] 어노테이션  (0) 2022.12.08
[Java] JVM이란 ?  (0) 2022.11.27

댓글