본문으로 바로가기

1. OOP

  • Object Orientied Programming
  • 먼저 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립해서 완성된 프로그램을 만드는 기법

 

2. 객체란?

현실과 자바에서의 객체

  • 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른 것과 식별 가능한
  • 객체는 속성동작으로 구성되어 있습니다.
  • 자바는 속성과 동작들을 필드메소드라고 부릅니다.
  • 현실 세계의 객체를 소프트웨어 객체로 설계하는 것을 객체 모델링이라고 합니다.

 

3. 객체의 상호작용

  • 현실 세계에서 일어나는 모든 현상은 객체와 객체 간의 상호작용으로 이루어져 있습니다.
  • 소프트웨어에서도 객체들은 각각 독립적으로 존재하고, 다른 객체와 서로 상호작용하면서 동작합니다.
  • 객체들 사이의 상호작용 수단은 메소드입니다. 
  • 객체의 상호작용은 객체 간의 메소드 호출을 의미하며 매개 값과 리턴 값을 통해서 데이터를 주고받습니다.
  • 매개 값은 메소드를 실행하기 위해 필요한 데이터
  • 리턴 값은 메소드가 실행하고 나서 호출 한 곳으로 돌려주는 데이터 (결과값)

 

4. 객체 간의 관계

집합 관계

  • 객체는 하나의 [부품]이고 하나의 [완성품]에 해당합니다.
  • Ex) 컴퓨터는 여러 부품으로 구성되어 있습니다.
  • 컴퓨터 <-- 집합 관계 -- { CPU, GPU, HDD, MEMORY, POWER,... }

 

사용 관계

  • 객체 간의 [상호작용], 객체는 다른 객체의 [메소드 호출]하여 원하는 결과를 얻어냅니다.
  • Ex) 사람은 컴퓨터를 사용합니다.
  • 사람 -- 사용 관계 --> 컴퓨터

 

상속 관계

  • 상위(부모) 객체를 기반으로 하위(자식) 객체를 생성하는 관계를 말합니다.
  • Ex) 컴퓨터는 기계의 종류입니다.
  • 컴퓨터 --상속 관계-->기계

 

5. 객체 지향 프로그래밍의 특징

캡슐화(Encapsulation)

  • 객체의 필드, 메소드를 하나로 묶고 실제 구현 내용을 감추는 것 입니다.
  • 외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메소드만 이용할 수 있다.
  • 필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위해서입니다.
  • 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지를 결정하기 위해 접근 제한자(Access Modifier)를 사용합니다.
  • Access Modifier는 객체의 필드와 메소드의 사용 범위를 제한함으로써 외부로부터 보호합니다.

 

상속(Inheritance)

  • 상위 객체는 자기가 가지고 있는 필드와 메소드를 하위 객체에게 물려주어 하위 객체가 사용할 수 있도록 해줍니다.
  • 상속은 상위 객체를 재사용해서 하위 객체를 쉽고 빠르게 설계할 수 있도록 도와줍니다.
  • 객체를 재사용해서 새로운 객체를 만들기 때문에 반복된 코드를 줄여줍니다.

 

다형성(Polymorphism)

  • 같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질을 말합니다.
  • 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있도록 해줍니다.
  • 자바는 다형성을 위해 부모 클래스 또는 인터페이스의 타입 변환을 허용합니다.
  • 부모 타입에는 모든 자식 객체가 대입될 수 있고, 인터페이스 타입에는 모든 구현 객체가 대입될 수 있습니다.
  • 다형성의 효과로 객체는 부품화가 가능합니다.