본문 바로가기
IT

OOP, 객체 지향 프로그래밍(Object-Oriented Programming)

by 김대근'IT공부 2019. 1. 8.

* 객체 지향 프로그래밍이란 프로그램을 객체 단위로 작성하는 방법이다.

  프로그램은 객체들로 구성되고 객체들은 속성과 기능을 가지고 있다.

 

객체 지향 기법들의 특징

---------------------------

* 캡슐화(encapsulation)

 - 관련된 데이터와 알고리즘(코드)이 하나의 묶음으로 정리되어 있어야 한다.

   데이터와 알고리즘을 캡슐에 넣어서 포장한다는 것을 의미한다.

   객체 지향에서는 이 캡슐을 클래스라고 부른다.

   캡슐화는 데이터를 감추고 외부와의 상호작용은 메소드를 통하는 방법이며, 내부의 데이터를 캡슐로 보호하는 역할

   을 한다.(정보 은닉-information hiding)

 

* 상속(inheritance)

 - 기존의 코드를 재활용하기 위한 기법으로 이미 작성된 클래스를 받아 새로운 클래스를 생성하는 기법이다.

   새로운 클래스는 이미 작성된 클래스의 모든 속성과 동작을 받는다, 새로운 클래스는 필요한 기능을 새롭게 추가 또는

   변경을 할 수 있다.

   상속을 통해 코드의 중복을 줄일 수 있어서 유지 보수와 변경도 쉬워진다.

 

* 다형성(polymorphism)

 - 객체가 취하는 동작이 상황에 따라 달라지는 것을 의미한다.

   실제 동작은 다르더라도 개념적으로 동일한 작업을 하는 멤버 함수들에 똑같은 이름을 부여할 수 있으므로 코드가

   간단해진다.

 

* 추상 클래스(abstract class)

 - 완전하게 구현되어 있지 않은 메소드를 가지고 있는 클래스를 의미한다.

   메소드가 미완성 되어 있어 객체를 생성할 수 없다.

   주로 상속 계층에서 추상적인 개념을 나타내기 위한 용도로 사용된다.

   하나 이상의 추상 메소드를 가지고 있다. (아래의 AAA() 처럼 몸체가 없는 메소드)

\*

 public abstract class A {

public abstract void AAA();

...

};

*\

  추상 클래스를 상속받는 서브 클래스에서는 반드시 추상 메소드를 재정의하여야 한다.(재정의 하지 않을 시 오류 발생)

  추상 클래스라고 하더라도 추상 메소드가 아닌 보통의 메소드도 가질 수 있다.

 

* 객체(object)

 - 상태와 동작을 가지고 있다.

   객체의 상태(state)는 객체의 속성값 이다. 

   객체의 동작(behavior) 또는 행동은 객체가 취할 수 있는 동작이다. 

   객체의 상태와 동작은 각각 필드와 메소드로 표현할 수 있다.

   객체 안의 변수를 필드(field), 객체 안의 함수를 메소드(method) 라고 한다. 

 

* 클래스(class)

 - 객체 지향 언어에서는 프로그램 개발의 단위가 클래스이다.

   하나의 클래스 안에는 여러 개의 메소드가 포함될 수 있으며, 하나의 메소드 안에는 여러 개의 문장이 포함될 수

   있다.

   클래스는 메소드와 변수로 이루어진다.

   클래스로부터 만들어지는 각각의 객체를 그 클래스의 인스턴스(instance)라고도 한다.

 

반응형