객치 지향이란 무엇인가? 객체는 무엇인가?
객체 지향이란 실제 세계를 모델링하여 소프트웨어를 개발하는 방법이다
Java, C#, C++ 이 그 예이다
TV를 보고 있는 우리들의 모습을 상상해보자
'나' 라는 객체가 'TV' 라는 객체를 '리모컨' 이라는 객체로 신호(메세지)를 주고 받으며 채널을 바꾼다
이러한 개념을 프로그래밍의 세계에 반영한 것이다
객체(Object)는 상태와 동작을 가지고 있다
객체의 상태(state)는 객체의 특징값(속성)이다
프로그램에서는 필드로 구현된다
객체의 동작(behavior)는 객체가 위할 수 있는 동작이다
프로그램에서는 메소드로 구현된다
소프트웨어 객체는 메세지(message)를 통해 다른 객체와 통신하고 상호작용한다
이와 비교되는 개념으로 절차 지향 프로그래밍(Procedural Programming)이 있다
문제를 해결하는 단계적 절차를 중요하게 생각하는 방법이다
처리해야 할 절차에 우선적으로 초점을 맞추고, 데이터를 표현할 방법을 찾는다
그에 반해 객체 지향 프로그래밍(Object-Oriented Programming)은
데이터와 절차를 하나의 덩어리(객체)로 묶어서 생각하는 방법이다
객체를 서술하는 데 필요한 데이터와 사용자가 그 데이터를 다루는 방법에 대해서 생각하면서 사용자가 이해하는 방식대로 객체에 초점을 맞춘다
이러한 인터페이스를 설계하고 난 후에, 인터페이스와 데이터 저장 형태를 구현한다
간단히 말해서 컴퓨터 하드웨어 부품을 구입해서 조립하는 것을 생각하면 된다
객체 지향 프로그래밍은 3가지 큰 장점이 있다
1. 캡슐화
관련된 데이터와 알고리즘(코드)이 하나의 묶음으로 정리되어 있는 것이다
이에 따라 정보 은닉의 효과를 가질 수 있다
객체의 내부를 보호하는 것이다
즉, 실제 구현 내용을 외부로부터 감추어 보호한다
정보 은닉이 가능하여 라이브러리가 업그레이드되면 쉽게 바꿀 수도 있다
2. 상속
이미 작성된 클래스(부모 클래스)를 이어받아서 새로운 클래스(자식 클래스)를 생성하는 기법이다
기존의 코드를 재활용할 수 있어서 반복되는 코드를 줄일 수 있다
3. 다형성
하나의 이름(방법)으로 많은 상황에 대처하는 기법이다
객체의 동작이 상황에 따라서 달라지는 것을 말한다
개념적으로 동일한 작업을 하는 멤버 함수들에 똑같은 이름을 부여할 수 있어서 코드가 더욱 간단해진다
디버깅이 쉽다는 장점도 있다
'Programming Language > Java' 카테고리의 다른 글
[Java] Laser Maze 게임 Prototype (1) | 2017.06.11 |
---|---|
[Java] 배열의 복사 (0) | 2017.04.06 |
[Java] Calendar, 날짜와 시간 (0) | 2017.03.20 |