객체
객체는
상태와 동작
를 가지고 있다.➡️ 필드와 메소드로 이루워져 있는 소프트웨어의 묶음
- 객체의 상태
객체의 속성
예) 텔레비전의 채널 번호, 볼륨, 전원 상태
- 객체의 동작
객체가 취할 수 있는 동작(기능, 행동)
예) 텔레비전의 켜기, 끄기, 채널 변경하기, 볼륨 변경하기 등
- 객체의 변수
필드(데이터)
- 객체 안의 함수
메소드(함수)
객체 지향 프로그래밍
객체 지향 프로그래밍이란
다양한 기능을 하는 소프트웨어 객체들을 조합
하여 자기가 원하는 기능을 구현하는 프로그래밍 방식➡️ 객체를 사용하는 프로그래밍 방식(
OOP
: Object-Oriented Programming)1. 절차 지향 프로그래밍 vs 객체 지향 프로그래밍
절차 지향 프로그래밍
Procedure Programming | 객체 지향 프로그래밍
Object-Oriented Programming |
명령형 프로그래밍 | 객체 조립 프로그래밍 |
하향식 설계 | 캡슐화 |
데이터와 함수의 분리 | 데이터와 함수를 하나의 덩어리로 |
2. 객체 지향 프로그래밍의 특징
◽ 캡슐화
서로 관련된 데이터와 알고리즘을
캡슐에 넣어서 보호하는 것
이다.사용자들에게 객체의 기능법만 제공하고, 내부는 보지 못하도록 감추는 개념이다.
LOCK
객체는 하나의 캡슐
로, 필드와 메소드를 가진다고 했는데 필드는 데이터, 메소드는 알고리즘에 해당한다.
- 목적
- 서로 관련된 데이터와 알고리즘을 하나로 묶는 것
- 객체를 캡슐로 싸서 객체의 내부를 보호하는 것 ≒ 정보 은닉
◽ 정보은닉
객체의 외부에서는
객체의 내부 데이터를 볼 수 없게
한다.객체 안의 데이터와 알고리즘은 외부에서 변경하지 못하게 막고, 공개된 인터페이스를 통해서만 객체에 접근하도록 하는 개념이다.
HIDE
- 전달 방법
외부 객체는 객체의 내부 데이터 값에 직접 접근할 수 없으므로,
메소드를 통해 간접적으로 전달
받아야 한다.- 캡슐화와 정보은닉의 필요성
캡슐화는 없고 정보 은닉만 되어 있다면 클래스 개발자는 언제든지 내부 데 이터와 알고리즘을 변경할 수 있기 때문에 업그레이드나 수정이 용이하다.
◽ 상속
이미 작성된 클래스(부모 클래스)를 이어받아
서 새로운 클래스(자식 클래스)를 생성할 수 있으며, 이것을 상속이라고 한다.- 자식 클래스는 부모 클래스의 모든 속성, 동작을 물려 받으며 필요한 부분을 변경하여 사용할 수 있다.
◽ 다형성
동일한 이름의 동작이라고 하여도
객체의 실제 타입에 따라서 동작의 내용이 달라지는 것
을 말한다.예) speak - 야옹, 꽥꽥, 멍멍 등
- 다형성을 사용해 개념적으로 동일한 작업을 하는 메소드에 똑같은 이름을 부여할 수 있으므로 코드가 더 간단해진다. 위의 예처럼 어떤 동물의 소리를 듣고 싶으면 'speak'만 호출하면 되기 때문이다.
◽ 추상화
불필요한 정보는 숨기고
중요한 정보만을 표현함으로써 프로그램을 간단히
만드는 기법이다.- 복잡성을 관리하는데 사용한다. 추상화를 사용하지 않으면 객체들이 너무 복잡해지기 때문이다.
- 추상화는 개발자마다 달라진다. 객체에 대하여 관심사가 다르기 때문이다.
Share article