아무코딩

[자바] OOP 본문

CS/자바

[자바] OOP

동 코 2020. 4. 18. 23:37

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

객체지향 프로그래밍(Object Oriented Programming)이란?

OOP는 컴퓨터 프로그램을 "객체"들의 모임으로 파악하고자 하는 프로그래밍의 패러다임 중에 하나이다. 각 객체들은 서로 메시지를 주고 받을 수 있으며 데이터를 처리 할 수있다.

절차 지향

C언어는 절차 지향 프로그래밍 이라고 하며, 쩔차 지향 프로그래밍은 프로세스가 함수 단위로 순서대로 진행되는 것을 말합니다.

객체 지향 프로그래밍의 장점

  • 프로그램을 유연하고 변경이 용이하게 만든다.
  • 프로그램의 개발과 보수를 간편하게 만든다.
  • 직관적인 코드 분석을 가능하게 한다.

위의 장점들을 관통하는 객체 지향 프로그래밍의 중요한 특성은 강한 응집도(Strong Cohesion)약한 결합도(Weak Coupling)를 지향한다는 점이다.)

  • 응집도(cohesion) : 프로그램의 한 요소가 해당 기능을 수행하기 위해 얼마만큼의 연관된 책임과 아이디어가 뭉쳐있는지를 나타내는 정도이다. 일반적으로 프로그램의 한 요소가 특정 목적을 위해 밀접하게 연관된 기능들이 무여서 구현되어 있고, 지나치게 많은 일을 하지 않으면 그것을 응집도가 높다고 표현한다. 응집도가 높으면 프로그램을 쉽게 이해할 수 있으므로 유지보수성이 높아진다.

    • 응집도가 낮은 클래스의 문제점 :
      • 이해하기 힘들다
      • 재사용하기 힘들다.
      • 유지보수가 힘들다.
      • 다른클래스의 변화에 민감하다.
  • 결합도(coupling) : 소프트웨어 코드의 한 요소가 다른 것과 얼마나 강력하게 연결되어 있는지, 또한 얼마나 의존적인지 나타내는 정도이다. 프로그램의 요소가 결합도가 낮다는 것은 그것이 다른 요소들과 관계를 그다지 맺지 않은 상태를 의미한다.

    • 결합도가 높은 클래스의 문제점
      • 연관된 다른 클래스가 변경되면 더불어 변경해야 한다.
      • 수정하려는 클래스를 이해하기 위해 연관된 다른 클래스를 함께 이해해야 한다.
      • 나중에 다른 프로그램에서 클래스를 재사용 하기도 힘들다.

OOP의 특징

  1. 추상화
    • 목적과 관련이 없는 부분을 제거하여 필요한 부분만을 표현하기 위한 개념.
    • 객체들의 공통된 특징을 파악해 정의해 놓은 설계 기법.
  2. 캡슐화
    • 연관있는 변수와 함수를 클래스로 묶는 작업.
    • 정보은닉을 할 수 있다.. 그렇다고 캡슐화 == 정보은닉은 아니다.
  3. 상속
    • 자식 클래스가 부모 클래스의 멤버를 물려받는 것.
    • 자식이 부모를 선택해서 물려 받는 것.
    • 상속 대상: 부모의 필드와 메소드
    • 상속의 효과
      • 부모클래스를 재사용해서 자식 클래스를 빨리 개발할 수 있다.
      • 반복된 코드의 중복을 줄여준다.
      • 유지 보수의 편리성을 제공해 준다. (부모클래스를 한번만 수정함으로써 자식클래스를 수정할 필요가 없음)
      • 객체의 다형성을 구현할 수 있다.
  4. 다형성
    • 같은 타입이지만 실행결과가 다양한 객체를 대입(이용) 할 수 있는 성질.
    • 부모 타입에는 모든 자식 객체가 대입될 수 있으며 자식 타입은 부모 타입으로 자동 타입변환이 됩니다.
    • 인터페이스와 상속은 둘 다 다형성이라는 객체지향 프로그래밍의 특징을 구현하는 방식이다.

Reference

'CS > 자바' 카테고리의 다른 글

[자바] Stream  (0) 2020.05.31
[자바]익명클래스 (Anonymous Class)  (0) 2020.05.24
컬렉션 프레임워크  (0) 2020.04.23
[자바] JVM  (0) 2020.04.18
[자바] 가비지 컬렉터  (0) 2020.04.18
Comments