PIDGEY
PIDGEY's Dev. BLOG
PIDGEY
전체 방문자
오늘
어제
  • 분류 전체보기 (30)
    • 개발 (28)
      • Java (6)
      • Spring Framework (4)
      • Design Pattern (7)
      • CS (0)
      • Algorithm (8)
      • React.JS (2)
    • 일기 (2)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

hELLO · Designed By 정상우.
PIDGEY

PIDGEY's Dev. BLOG

개발/Java

객체지향 프로그래밍과 설계

2022. 10. 18. 18:19

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

  • 등장 배경: 프로그램이 점차 거대해지면서 등장!
  • 프로그램의 동작을 객체 단위로 작게 나누고 합쳐서 하나의 프로그램을 구성하자.
  • 객체 간 협력 관계에 주목 🤩

객체지향의 특성

  • 캡슐화
    • 기능을 수행하는 최소 단위
    • 정보의 은닉 (접근 지정자)
  • 상속
    • 추상 : 상위, 부모, super, 일반화
    • 구체 : 하위, 자식, (this), 구체화
    • 공통된 기능을 여러 객체에게 전달하고 싶을 때 (일반화)할 때 오류에 빠지지 않도록 조심
      • 객체 간 관계와 의미를 잘 파악할 필요가 있음!
  • 추상화
    • 추상 객체 ↔ 구체 객체(구현체) (= 부모 ↔ 자식 = 상위 ↔ 하위 = 일반화 ↔ 구체화)
    • 의미적 추상체 / 추상 기능을 가진 객체(abstract) / 객체 자체가 추상적 (interface)
  • 다형성
    • 추상 - 구체 클래스 간 형(Type)을 여러 가지로 표현할 수 있다.
    interface Login {
    	void login() {}
    }
    
    class KakaoLogin implements Login {
    	void kakao() {}
    
    	@override
    	void login() {}
    }
    
    KakaoLogin k = new KakaoLogin();
    Login l = new KakaoLogin();
    // Login 인터페이스는 kakao()를 찾을 수 없기 때문에 l.kakao()는 맞지 않음
    

객체지향 설계

  • 객체를 어떻게 구분했는지 / 객체 간 연관 관계가 어떠한 지에 주목
  • UML
    • 설명하기 위한 도구
      • Usecase
      • Sequence
      • Package
      • Class
    • Tool
      • draw.io
      • staruml.io
      • PointPoint / Visio / 그림판 / …
  • 어떻게 하면 객체를 잘 나누고 연관 지을 수 있을까?
    • 객체지향 설계의 5가지 원칙 (SOLID)
    • 디자인 패턴
      • 원칙에 따라 설계했을 때 보인 여러 상황에서의 공통점
      • 23가지 패턴 (참고자료)
저작자표시 비영리 동일조건 (새창열림)

'개발 > Java' 카테고리의 다른 글

[SOLID] 객체 지향 설계의 5가지 원칙  (0) 2023.07.04
[Java] Functional Interface와 익명 클래스  (0) 2022.10.19
[Java] Default Method  (0) 2022.10.19
[Java] JVM? JRE? JDK?  (0) 2022.10.18
[Java] String, StringBuilder, StringBuffer  (0) 2022.10.18
    '개발/Java' 카테고리의 다른 글
    • [Java] Functional Interface와 익명 클래스
    • [Java] Default Method
    • [Java] JVM? JRE? JDK?
    • [Java] String, StringBuilder, StringBuffer
    PIDGEY
    PIDGEY

    티스토리툴바