1. 절차 지향과 객체 지향
절차 지향 프로그래밍 (Procedural Programming)
절차 지향 프로그래밍은 문제를 해결하는 순차적인 처리를 중요하게 생각하는 프로그래밍 기법을 이야기한다.
여기서 '절차'는 함수 단위로 처리한다.
객체 지향 프로그래밍 (Object-Oriented Programming; OOP)
객체 지향 프로그래밍은 데이터와 함수를 하나의 객체로 묶어서 문제를 해결하는 프로그래밍 방식이다.
현실 세계의 객체를 소프트웨어 세계에 구현(모델링)한다.
객체 지향 프로그래밍의 장점
- 소프트웨어를 개발하는데 유용하다.
- 유지,보수하기에 효율적이다.
2. 객체 지향 프로그래밍
2-1. 객체 지향의 개념들
(1) Encapsulation 캡슐화
(2) Information hiding 정보은닉
(3) Inheritance 상속
(4) Polymorphism 다형성
2-2. 객체
객체 지향 프로그래밍에서 말하는 객체는 현실세계에서 존재하는 객체들을 모델링하여 소프트웨어상에 구현한 것이다.
모든 객체는 상태와 동작으로 구성된다.
- 객체의 상태(state)는 특징, 속성, 값이다.
- 객체의 동작(behavior)은 객체가 할 수 있는 행동, 혹은 기능이다
현실세계의 객체의 상태와 동작은, 소프트웨어 상에서 각각 변수와 함수로 모델링할 수 있다.
즉, 객체는 변수와 함수로 이루어져 있는 소프트웨어의 묶음이라 할 수 있다.
변수(variable)에는 객체의 상태를 저장한다. 함수(function)는 특정한 동작(작업)을 수행한다.
- 멤버변수 (field) : 객체 안에 포함된 변수
- 멤버 함수 (method) : 객체 안에 포함된 함수
2-3. 메시지
객체는 메시지를 통해 다른 객체와 상호작용한다.
대부분의 객체는 무언가를 실행하기 위해서 다른 객체를 필요로 한다.
소프트웨어 세계의 객체는 메시지(message)를 통해 다른 소프트웨어 객체와 통신하고 서로 상호작용한다.
2-4. 클래스
객체를 생성하기 위한 Template 이다.
서로 관련이 있는 변수와 함수들을 한곳으로 모은 것이다.