객체지향 프로그래밍(OOP)란 무엇을 뜻 하는가?
그 전에 일단 객체란, 세상에 존재하는 물체를 뜻하며 식별이 가능한 것이다. 프로그래밍에서는 객체는 속성(필드)과 행위(메서드)로 구성되어있다.
객체지향 프로그래밍이란 속성과 행위로 구성괸 객체들과 그들의 관계를 만드는 설계도(클래스)를 이용하여 프로그램을 만드는 것을 뜻한다.
또한, 객체지향 프로그래밍은 개발자가 조작하는 데 필요한 논리보다는 조작하고자 하는 객체에 초점을 맞춘다.
위에서 언급했듯이, 세상의 물체들에도 서로 간에 관계가 있는것 처럼 프로그래밍에서도 객체 간의 관계가 있다. 또한, 객체지향 프로그래밍에는 중요한 특징들이 있다.
📍객체간의 관계
- 사용 관계
= 객체 A 가 객체 B를 사용한다면 그 둘의 관계는 사용 관계이다.
예 : 사람은 자동차를 사용한다.- 포함 관계
= 객체 A 에 여러 객체들 B,C,D가 포함될 수 있다면, 그들의 관계는 포함 관계이다.
예 : 타이어, 차문, 핸들은 자동차에 포함되어있다.- 상속 관계
= 객체 A를 토대로 객체 B가 만들어진다면, 그 둘의 관계는 상속 관계이다.
예 : 스포츠카라는 객체가 자동차 객체를 토대로 만들어진다면 스포츠카 객체는 자동차 객체를 상속 받아 이 둘의 관계는 상속관계가 된다.
📍객체지향 프로그래밍의 특징
- 캡슐화 (은닉화) : 속성(필드)와 행위(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것
예 : private, public, default, protected- 상속 : 부모 객체가 가지고 있는 필드와 메서드를 자식 객체에 물려주어 자식 객체가 이를 사용할 수 있도록 만드는 것
- 다형성 : 객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 다른 여러가지 형태로 재구성되는 것
예 : Overloading, Overriding, Casting- 추상화 : 객체에서 공통된 부분들을 모아 상위 개념으로 새롭게 선언하는 것
📍객체와 클래스
클래스 = 설계도
객체 = 설계도를 배경으로 만들어진것
클래스를 토대로 생성된 객체를 해당 클래스의 ‘인스턴스’라고 부르며 이 과정을 ‘인스턴스화’라고 부릅니다.
동일한 클래스로 여러 개의 인스턴스를 만들 수 있다.
정말 좋은 글 감사합니다!