JAVA

[JAVA] 객체지향 프로그래밍의 이해

vluevy 2021. 7. 20. 22:59
728x90
반응형

절차지향 프로그래밍

개요

  • 절차지향 프로그래밍이란 프로그램 전체가 유기적으로, 일련의 순서에 따라서 처리되도록 하는 프로그래밍 기법
  • C, Basic 등이 속함

특징

  • 처리속도가 빠르다
  • 코드가 길수록 재사용성과 유지보수성이 떨어짐

 

객체지향 프로그래밍

개요

  • 실제 세계를 객체라는 단위로 모델링하여 개발하는 프로그래밍 기법
  • 객체(Object)는 속성(Attribute)과 메소드(Method)가 결합된 형태
  • 객체를 통해 개체(Entity)를 표현함
  • JAVA, C++, C#, python 등이 속함

특징

  • 확장 및 유지 보수 용이
  • 모듈의 재사용 가능

구성요소

  • 객체 = 상태 + 동작
           = 속성 + 프로시저
           = 필드 + 메소드
  •  
  • 클래스
  • 속성
  • 메소드&메시지

객체지향의 4요소

  1. 캡슐화 : Encapsulation
    • 데이터와 함수를 하나로 묶는 것을 의미
    • 캡슐화로 인해 재사용에 용이
    • 코드의 손상과 오용을 막고 안전하게 보호 가능
    • 객체 간 결합도 낮아짐
    • 정보은닉
  2. 상속성 : Inheritance
    • 클래스의 속성과 행위를 하위 클래스에 물려주거나 , 상위 클래스에서 물려받는 것
    • 클래스 간의 전체 구조 파악하기 쉬움
    • 재사용성 증대, 확장 및 유지보수 용이
  3. 다형성 : Polymorphism
    • 하나의 객체가 여러 형태를 가질 수 있는 것
    • 오버라이딩(Overriding), 오버로딩(Overloading)
    • 재사용, 유지보수에 용이
  4. 추상화
    • 객체에서 공통된 속성과 행위를 추출하는 것
    • 기능적인 측면을 정의

설계원칙

  • 단일 책임의 원칙 (SRP : The Single Responsibility Principle)
    - 하나의 클래스에는 한 가지 종류의 기능을 두어야 한다는 원칙
  • 개방/폐쇄의 원칙 (OCP : The Open-Closed Principle)
    - 확장에 대해서는 개방되어야 하지만 변경에 대해서는 폐쇄되어야 한다는 원칙
    - 기존 클래스의 변경 최소화
  • 인터페이스 분리의 원칙 (ISP : Interface Segregation Principle)
    - 클라이언트는 자신이 사용하지 않는 메소드와 의존 관계를 갖지 않도록 해야 한다는 원칙
  • 리스코프 치환의 원칙 (LSP : Liskov Substitution Principle)
    - 서브타입은 언제나 기반타입으로 대체할 수 있어야 한다는 원칙
  • 의존 관계 역전의 원칙 (DIP : Dependency Inversion Principle)
    - 상위 레벨 모듈이 하위 레벨 모듈의 구현에 의존해서는 안 되며 하위 레벨 모듈이 상위 레벨 모듈에서 정의한 추상 타입에 의존해야 한다는 원칙
반응형