dev._.note

[JAVA] 객체지향의 3대 요소 & 5대 원칙 본문

Dev/JAVA

[JAVA] 객체지향의 3대 요소 & 5대 원칙

Laena 2023. 2. 22. 20:13

* 3대 요소

1. 캡슐화(Encapsulation) = 정보은닉

캡슐화란?

- 추상화를 통해 정의된 데이터들과 기능을 하나로 묶어 관리하는 기법.
- 클래스의 가장 중요한 목적인 데이터의 접근제한을 원칙으로 하여 클래스 외부에서 데이터의 직접 접근을 막고, 대신 데이터를 처리하는 함수(매소드)을 클래스 내부에 작성하여 데이터에 접근하는 방식.

캡슐화의 원칙

필드 : 클래스의 멤버 변수에 대한 접근권한은 private 을 원칙으로 한다.
메소드 : 클래스의 멤버 변수에 대한 연산처리를 목적으로 하는 메소드를 클래스 내부에 작성하고, 클래스 밖에서 접근할 수 있도록 public 으로 설정한다.

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

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

3. 다형성(Polymorphism) = 사용편의

하나의 객체가 여러 가지 형태를 가질 수 있는 것.

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

 


* 5대 원칙(SOLID 원칙)

1. 단일 책임 원칙(Single Responsibility Principle)

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

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

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

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

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

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

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

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

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

 

'Dev > JAVA' 카테고리의 다른 글

[JAVA] 역정규화  (0) 2023.03.16
[JAVA] Jsp 개요  (0) 2023.03.02
[JAVA] 객체지향(Object oriented)  (1) 2023.02.21
[JAVA] 중첩 반복문  (0) 2023.02.20
[JAVA] 배열(Array)  (0) 2023.02.19