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

코드를 역할에 따라 분류하여 프로그래밍 하는 방법이다.

역할에 따라 묶은 코드를 인간이나 사물처럼 하나의 독립된 개체로 간주한다.

코드를 인간 사회의 흐름과 같이 표현하기 때문에 이해하고 관리하기 쉽다.


Class라는 문법으로 표현하는데,

1) 사용자 정의 데이터 타입을 만들 때 사용한다.

2) 관련된 메서드를 관리하기 쉽게 묶을 때 사용한다.

Class 문법에 대해서는 다음 포스팅에서!!!!!!!


객체지향의 특징

1. Encapsulation(캡슐화)

추상화를 무너뜨리지 않게 만드는 문법이다.

즉, 클래스에 정의된 원래 목적에 맞게 동작할 수 있도록 클래스 멤버(변수, 메서드, 이너 클래스)의 접근 제한하는 것이다.

만약 인스턴스 변수에 무효한 값이 들어가거나 사용하지 말아야할 메서드를 호출하게 되면,

시스템이 목적한대로 동작하지 않을 수 있다.

그래서 변수나 메서드, 이너클래스의 접근을 제한하는 것이다.

 

2. Inheritance(상속)

부모-자식 간의 관계로 보면 된다.

코드의 재사용성을 위해 존재하는 개념이다.

부모의 것을 상속받으면 부모가 갖고 있는 함수와 멤버들을 따로 선언하지 않고 바로 사용할 수 있다.


3. Polymorphism(다형성)

자바에서 폴리모피즘은 오버로딩(overloading)과 오버라이딩(overriding)으로 표현된다. 같은 이름인데 다르게 행동한다.


  • 오버로딩(overloading)?

같은 기능을 수행하는 메서드에 대해 같은 이름을 부여함으로써 프로그래밍의 일관성을 확보하는 문법이다.

파라미터의 타입이나 개수가 다르더라도 같은 기능을 수행한다면, 그 메서드의 이름을 같게 함으로써 프로그래밍의 일관성을 확보할 수 있다.

이렇게 같은 이름을 가진 메서드가 추가로 적재된다고 해서 '오버로딩(overloading)'이라 한다.


  • 오버라이딩?

수퍼클래스의 메서드를 재정의 하는 방법이다. 같은 함수명을 갖고 있지만 서로 다른 클래스에서 다르게 활동한다.

재정의 하는 이유서브 클래스의 조건에 맞춰서 기능을 바꾸기 위함이다.

서브 클래스의 조건에 따라 수퍼 클래스의 메서드를 그냥 쓸 수 없다면, 서브 클래스에서 재정의해야 한다.


4. Abstraction(추상화)

어떤 목적에 맞게 동작하도록 클래스 안에 변수나 메서드를 정의한 것을 말한다.


+ Recent posts