Study _ JAVA_02

객체란? 객체지향 프로그래밍의 특징

Posted by Ymju on February 18, 2020 · 2 mins read

객체란? 객체지향 프로그래밍의 특징이란?

목적 : 면접 질문 중 기본이지만 면접에 대한 긴장과 불명확한 개념이해로 인해 엉뚱한 대답만 하고 온 경험이 있다. 다시 이런일이 일어나지 않도록 제대로 공부한다.

객체지향 프로그래밍이란? (OOP - object-oriented programming)


이해하기 쉽게 설명하자면 객체들을 마치 레고 블럭처럼 조립해서 하나의 프로그램을 만드는 것이 객체지향 프로그래밍이라고 할 수 있다.

객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 그러므로 객체지향 프로그래밍이란 객체를 만드는 것이다.

따라서 객체지향 프로그래밍의 시작은 객체란 무엇인가를 이해하는 것이라 할 수 있다.


그렇다면 객체란?


객체(Object)란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른것과 식별 가능한 것을 말한다.

객체는 속성과 동작으로 구성되어 있다고 보면 되는데 자바에서는 이 속성과 동작을 각각 필드(field) 와 메소드(method) 라 부른다.


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


1. 추상화

불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 공통의 속성이나 기능을 묶어 이름을 붙이는 것이다.

객체 지향 관점에서 클래스를 정의하는 것을 바로 추상화라고 정의내릴 수 있다


2. 캡슐화

객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용을 감추는 것을 말한다.

캡슐화를 하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위함이다.

자바는 캡슐화된 멤버를 노출시킬 것인지, 숨길 것인지 결정하기 위해 접근 제한자(Access Modifier)를 사용한다.

접근제한자는 객체의 필드와 메소드의 사용범위를 제한함으로써 외부로부터 보호한다.(public, protected, private)


3. 상속

상속이란 객체 지향 프로그래밍에서 부모역할의 상위객체가 자기가 가지고 있는 필드와 메소드를 자식역할의 하위 객체에게 물려주어 하위객체가 사용할 수 있도록 해주는 것입니다.

상속은 상위객체를 재사용함으로써 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고, 이미 잘 개발된 객체를 재사용해서 새로운 객체를 만들기 때문에 반복된 코드의 중복을 줄여줍니다.


4. 다형성

다형성은 같은 타입이지만 실행결과가 다양한 객체를 이용할 수 있는 성질을 말합니다. 코드 측면에서 보면 다형성은 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 잇게 해줍니다.

예를들면 자바에서는 오버라이딩(Override)이 이와 관련된 기능이다.


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

장점

- 코드의 재사용성이 용이하다.

다른 사람이 만든 클래스를 이용할수 있고 상속을 통해 확장해서 사용할 수 있다.

- 유지보수가 쉽다

절차 지향 프로그래밍 같은 경우 코드를 수정할 때 일일이 찾아서 수정해야 하지만, 객체 지향 프로그래밍에서는 클래스 내부의 멤버 변수나 메소드로 있기 때문에 해당 부분만 수정하면 된다.

- 대형 프로젝트에 적합하다.

클래스 단위로 모듈화시켜서 개발할 수 있기 때문에 업무 분담이 쉽다.

- 디버깅이 쉽다.

- 분석과 설계의 전환이 쉽다.


단점

- 처리 속도가 느리다.

- 객체가 많으면 용량이 커진다.

- 설계시에 많은 시간과 노력이 필요하다.