객체 지향 프로그래밍이란?
컴퓨터 프로그램을 명령어 모음이 아닌, 여러 개의 독립된 단위, "객체"들의 모임으로 파악하는 프로그래밍 패러다임이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 객체지향프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다.
객체 지향의 특징
- 추상화
- 캡슐화
- 상속
- 다형성
다형성
객체 지향 패러다임의 특징 중 가장 핵심으로 객체 지향을 사용하는 목적 달성을 위해 가장 중요한 역할을 하는 특징이다.
다형성은 어떤 객체의 속성이나 기능이 상황에 따라 여러가지 형태를 가질 수 있는 성질이다. 다형성을 활용하면 기능을 확장하거나, 객체를 변경해야할 때 타입 변경 없이 객체 주입만으로 수정이 일어날 수 있어 유연한 변경이 가능하다. 객체를 설계할 때 역할과 구현을 명확히 분리하는 방식으로 다형성을 구현할 수 있다.
인터페이스를 통해 역할을 구현하고, 클래스와 구현 객체를 이용해 구현을 구현한다.
인터페이스를 먼저 부여하고 -> 인터페이스에 있는 역할을 수행하는구현 객체를 만든다.
현실세계를 생각해보면, 자동차 인터페이스를 통해 테슬라도 만들고 아반떼도 만들고 K5도 만든다. 사용자는 자동차 인터페이스만 안다면 어떤 차든 작동시킬 수 있다.(물론 세부 기능은 다르지만 오버라이딩 됬다고 생각하면 된다.)
인프런 스프링 핵심 원리 - 기본편 (김영한님 강의) 를 듣고 복습한 내용입니다.