1. SRP (Single Responsibility Principle) - 단일 책임 원칙
    • 각 클래스는 단 하나의 책임만 가져야 합니다. 즉, 하나의 클래스는 하나의 기능만 수행하며, 이를 변경할 이유도 하나여야 합니다.
    • 장점: 코드 변경이 필요한 경우 해당 클래스만 수정하면 되므로 수정이 용이합니다.
  2. OCP (Open/Closed Principle) - 개방-폐쇄 원칙
    • 클래스는 확장에는 열려 있어야 하지만, 수정에는 닫혀 있어야 합니다. 즉, 기능을 추가할 수는 있지만, 기존의 코드를 변경하지 않도록 설계해야 합니다.
    • 장점: 시스템의 기능 확장 시 기존 코드를 건드리지 않으므로 버그 발생 확률을 줄입니다.
  3. LSP (Liskov Substitution Principle) - 리스코프 치환 원칙
    • 서브타입은 언제나 기반 타입으로 교체할 수 있어야 합니다. 즉, 부모 클래스의 객체를 자식 클래스로 대체해도 프로그램의 동작에 문제가 없어야 합니다.
    • 장점: 클래스 간의 상속 관계를 올바르게 설계하여 일관성 있는 코드를 유지할 수 있습니다.
  4. ISP (Interface Segregation Principle) - 인터페이스 분리 원칙
    • 클라이언트는 자신이 사용하지 않는 메서드에 의존하지 않아야 합니다. 즉, 큰 인터페이스를 여러 개의 작은 인터페이스로 분리하여 각 인터페이스가 특정 클라이언트의 필요에 맞게끔 해야 합니다.
    • 장점: 불필요한 메서드 의존성을 줄임으로써 유연하고 독립적인 인터페이스를 설계할 수 있습니다.
  5. DIP (Dependency Inversion Principle) - 의존성 역전 원칙
    • 고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 둘 다 추상화에 의존해야 합니다. 즉, 구현체보다는 인터페이스나 추상 클래스에 의존하는 설계를 해야 합니다.
    • 장점: 코드의 결합도를 낮추고, 코드의 재사용성과 확장성을 높입니다.

 

'JAVA > Java 상식 및 개념' 카테고리의 다른 글

[Java] 객체지향 4요소  (0) 2024.11.11
[Java] Enum type 활용  (0) 2023.10.26
[Java] 깊은복사 얕은복사  (0) 2023.10.04
[JAVA] Call by value, Call by reference 차이  (0) 2023.10.04
[Java] Mutable과 Immutable  (0) 2023.10.04

1. 추상화 (Abstraction)

  • 추상화는 복잡한 시스템에서 필요한 정보만 표현하고, 불필요한 세부 사항은 숨기는 것입니다.
  • 예를 들어, 자동차 클래스에서는 자동차가 움직이는 방식과 같은 기능만 정의하고, 엔진의 내부 작동 원리와 같은 세부 사항은 숨기는 것이 추상화입니다.
  • 장점: 시스템의 복잡성을 줄이고, 필요한 핵심적인 정보에만 집중할 수 있습니다.

2. 캡슐화 (Encapsulation)

  • 캡슐화는 객체의 속성과 메서드를 하나로 묶고, 외부에서 접근할 수 없도록 보호하는 것입니다.
  • 이를 통해 객체의 내부 구현을 감추고, 외부에서는 필요한 인터페이스만을 제공합니다.
  • 예를 들어, 클래스의 필드를 private로 선언하고, 접근을 위해 getter와 setter 메서드를 제공하는 방식이 있습니다.
  • 장점: 데이터를 외부에서 잘못 수정하지 못하게 하고, 객체의 무결성을 보장할 수 있습니다.

3. 상속 (Inheritance)

  • 상속은 기존 클래스(부모 클래스)의 속성과 메서드를 자식 클래스가 물려받아 사용할 수 있도록 하는 것입니다.
  • 상속을 통해 기존 클래스의 기능을 확장하거나 변경하여 재사용성을 높이고, 중복 코드를 줄일 수 있습니다.
  • 예를 들어, Animal 클래스를 상속받아 Dog와 Cat 클래스에서 공통된 속성과 메서드를 사용할 수 있습니다.
  • 장점: 코드 재사용성을 높여 유지보수를 용이하게 합니다.

4. 다형성 (Polymorphism)

  • 다형성은 동일한 인터페이스를 통해 서로 다른 구현을 사용할 수 있도록 하는 것입니다. 즉, 하나의 메서드가 다양한 방식으로 동작할 수 있게 합니다.
  • 다형성은 주로 **오버로딩(메서드 오버로딩)**과 **오버라이딩(메서드 오버라이딩)**을 통해 구현됩니다.
  • 예를 들어, Animal 클래스의 speak() 메서드를 Dog와 Cat 클래스에서 각각 오버라이딩하여 다른 동작을 하게 할 수 있습니다.
  • 장점: 유연한 코드 작성이 가능하며, 코드의 확장성을 높입니다.

'JAVA > Java 상식 및 개념' 카테고리의 다른 글

[Java] 객체지향 5원칙  (0) 2024.11.11
[Java] Enum type 활용  (0) 2023.10.26
[Java] 깊은복사 얕은복사  (0) 2023.10.04
[JAVA] Call by value, Call by reference 차이  (0) 2023.10.04
[Java] Mutable과 Immutable  (0) 2023.10.04

https://techblog.woowahan.com/2527/

'JAVA > Java 상식 및 개념' 카테고리의 다른 글

[Java] 객체지향 5원칙  (0) 2024.11.11
[Java] 객체지향 4요소  (0) 2024.11.11
[Java] 깊은복사 얕은복사  (0) 2023.10.04
[JAVA] Call by value, Call by reference 차이  (0) 2023.10.04
[Java] Mutable과 Immutable  (0) 2023.10.04

https://zzang9ha.tistory.com/372

'JAVA > Java 상식 및 개념' 카테고리의 다른 글

[Java] 객체지향 4요소  (0) 2024.11.11
[Java] Enum type 활용  (0) 2023.10.26
[JAVA] Call by value, Call by reference 차이  (0) 2023.10.04
[Java] Mutable과 Immutable  (0) 2023.10.04
[Java] MVC 패턴 이해  (0) 2023.10.02

https://sudo-minz.tistory.com/91

'JAVA > Java 상식 및 개념' 카테고리의 다른 글

[Java] Enum type 활용  (0) 2023.10.26
[Java] 깊은복사 얕은복사  (0) 2023.10.04
[Java] Mutable과 Immutable  (0) 2023.10.04
[Java] MVC 패턴 이해  (0) 2023.10.02
[Java] 객체 지향 프로그래밍  (0) 2023.09.27

https://choiblack.tistory.com/47

'JAVA > Java 상식 및 개념' 카테고리의 다른 글

[Java] 깊은복사 얕은복사  (0) 2023.10.04
[JAVA] Call by value, Call by reference 차이  (0) 2023.10.04
[Java] MVC 패턴 이해  (0) 2023.10.02
[Java] 객체 지향 프로그래밍  (0) 2023.09.27
[Java] 디자인 패턴  (0) 2023.09.26

https://cocoon1787.tistory.com/733

'JAVA > Java 상식 및 개념' 카테고리의 다른 글

[JAVA] Call by value, Call by reference 차이  (0) 2023.10.04
[Java] Mutable과 Immutable  (0) 2023.10.04
[Java] 객체 지향 프로그래밍  (0) 2023.09.27
[Java] 디자인 패턴  (0) 2023.09.26
[Java] 변수명 규칙  (0) 2023.09.19

https://aig2029.tistory.com/368

'JAVA > Java 상식 및 개념' 카테고리의 다른 글

[JAVA] Call by value, Call by reference 차이  (0) 2023.10.04
[Java] Mutable과 Immutable  (0) 2023.10.04
[Java] MVC 패턴 이해  (0) 2023.10.02
[Java] 디자인 패턴  (0) 2023.09.26
[Java] 변수명 규칙  (0) 2023.09.19

https://catsbi.oopy.io/344dbe7b-9774-48fc-9c95-b554e9c1c4bc

 

자바 디자인 패턴의 이해 - Gof Design Pattern[1~11]

목차

catsbi.oopy.io

 

 

'JAVA > Java 상식 및 개념' 카테고리의 다른 글

[JAVA] Call by value, Call by reference 차이  (0) 2023.10.04
[Java] Mutable과 Immutable  (0) 2023.10.04
[Java] MVC 패턴 이해  (0) 2023.10.02
[Java] 객체 지향 프로그래밍  (0) 2023.09.27
[Java] 변수명 규칙  (0) 2023.09.19

https://thalals.tistory.com/325

'JAVA > Java 상식 및 개념' 카테고리의 다른 글

[JAVA] Call by value, Call by reference 차이  (0) 2023.10.04
[Java] Mutable과 Immutable  (0) 2023.10.04
[Java] MVC 패턴 이해  (0) 2023.10.02
[Java] 객체 지향 프로그래밍  (0) 2023.09.27
[Java] 디자인 패턴  (0) 2023.09.26

+ Recent posts