ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 객체지향 프로그래밍 (OOP)
    Java & Spring/자바 2020. 10. 20. 15:43
    반응형

    객체지향 프로그래밍(OOP)란 무엇인가

    • 오퍼레이션(operation)으로 정의할 수 있음 (객체의 기능)
      • 식별 이름
      • 파라미터 및 파라미터 타입
      • 리턴 값 및 리턴 타입
    • 인터페이스
      • 모든 오퍼레이션 집합
      • 객체를 사용하기 위한 명세를 의미
    • 메시지
      • 오퍼레이션의 실행을 요청하는 것을 메시지를 보낸다고 표현
      • 메소드 호출 ~> 메시지를 보내는 과정
      • 객체들이 메시지를 통해서 통신 ~> 원하는 결과를 얻는다 (객체 간 메시지를 주고받음)
    • 4가지 특징
      • 추상화
        • 객체의 공통 프로퍼티(요소)와 메소드를 뽑아내는 작업
        • 코드를 어떻게 짜야할지 미리 추상적으로 설계하는 작업
      • 캡슐화
        • 객체 수행 목적에 따라서 데이터 구조 및 메소드를 결합해서 묶는 것.
        • 외부에서 무분별한 객체의 변경을 막기 위해, 구현 내용을 감추고 이용 방법만 제시
        • 클래스 내의 멤버변수를 외부로부터 숨기는 것을 포함(은닉화)
        • javascript 에서는 현재 class 내부에 변수 앞에 #을 붙여, private하게 이용하고 있음 (메소드는 불가)
        • 자바에서는 접근 제한자를 사용(private, public, protected, default)
          • public
            • 모든 접근을 허용
          • protected
            • 같은 패키지에 있는 객체와 상속관계의 객체만 허용
          • default
            • 같은 패키지에 있는 객체만 허용
          • private
            • 현재 객체 내에서만 허용
      • 상속
        • 상위 개념의 특징을 하위 개념이 물려받아서 사용
        • 부모 클래스의 코드를 상속 ~> 코드 반복을 줄여줌
        • 유지보수에 좋음
        • 객체의 다형성을 구현하기 수월함
        • 단점
          • 상위 클래스 변경이 어려움(상위 클래스에 의존성이 높음)
          • 클래스의 불필요한 증가
          • 상속의 오용
          • ~> 객체 조립으로 해결, 재사용의 관점이 아니라 기능 확장의 관점에서 상속
      • 다형성
        • 하나의 메소드나 클래스가 다양한 방법으로 동작, 코드의 재사용 목적
        • Overriding
          • 자식클래스에서 부모클래스의 메소드의 내부 로직 재작성
        • Overloading
          • 하나의 클래스에서 같은 이름을 가진 오퍼레이션을 여러개 정의
          • 매개변수가 달라야함(반환타입은 달라도 되지만, 매개변수가 같으면 성립 X)
    • 객체 지향적 설계 원칙( == SOLID 원칙)
      • 단일 책임 원칙
        • 모든 클래스는 하나의 책임만 가져야하고, 이 책임을 완전히 캡슐화 해야함
        • 클래스를 변경하는 이유는 단 하나의 이유여야함
      • 개방-폐쇄 원칙
        • 확장은 열려있고 수정은 닫혀있는 것.
        • 기존의 코드 변경 X(closed), 기능은 추가 가능(Open) 설계 원칙
      • 리스코프 치환 원칙
        • 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다는 원칙
        • 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고, 확장만 수행
      • 인터페이스 분리 원칙
        • 사용하지 않는 인터페이스는 구현 X
        • 하나의 일반적인 인터페이스 < 여러 개의 구체적인 인터페이스
      • 의존 역전 원칙
        • 의존 관계를 맺을 때는 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺을 것 (변화가 없는 것에 의존)
    반응형

    'Java & Spring > 자바' 카테고리의 다른 글

    String vs (StringBuilder vs StringBuffer) (JAVA)  (0) 2020.10.20
    Final 키워드 (JAVA)  (0) 2020.10.20
    동기화(Synchronized)  (0) 2020.10.20
    Annotation(어노테이션)  (0) 2020.10.20
    JVM & GC (JAVA)  (0) 2020.10.20

    댓글

Designed by Tistory.