객체(Object)
- 사전적 의미로 의사나 행위가 미치는 대상
- 구체적, 추상적 데이터의 단위(학생, 회원, 주문, 배송)
- 자신의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말함
- 자바에서는 이 속성과 동작을 각각 필드(field)와 메서드(method)라 부름
절차 지향 프로그래밍
- 대표적으로 C언어가 있다.
- 절차 지향 언어는 객체를 순서차적으로 처리하여 프로그램 자체가 유기적으로 연결되어야 한다.
- 시간이나 사건의 흐름에 따른 프로그래밍
ex) 차량 -> 시동을 건다 -> 주차 브래이크(사이드 브레이크)를 푼다. -> 기어를 변경한다. -> 엑셀을 밟는다.
장점
단점
- 유지보수가 어려움
- 실행 순서가 정해져 있으므로 코드의 순서가 바뀌면 동일 결과를 보장하기 어려움
- 디버깅이 어려움
객체 지향 프로그래밍
- 실제 세계를 모델링하여 소프트웨어를 개발하는 방법
특징
캡슐화
- 캡슐화란 관련된 데이터와 알고리즘이 하나의 묶음으로 정리된 것
- 데이터를 감추고 외부 세계와의 상호작용은 메서드로 통하는 방법
- 외부 객체는 객체내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드와 메서드만 이용 가능
- 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하기 위함
- 자바 언어는 캡슐화된 맴버를 노출/숨김 여부를 결정하기 위해 접근제한자를 사용
- 접근제한자는 객체의 필드와 메서드의 사용 범위를 제한함으로써 외부로부터 보호
상속
- 이미 작성된 클래스를 이어 받아서 새로운 클래스를 생성하는 기법
- 상위 객체를 재사용함으로써 하위 객체를 쉽고 빨리 설계할 수 있도록 도와줌
- 반복된 코드의 중복을 줄여줌
다형성
- 상속과 연관된 개념으로, 하나의 객체가 다른 여러 객체로 재구성 되는 것
- 하나의 타입에 여러 객체를 대입함으로써 다양한 기능을 이용할 수 있게 해줌.
추상화
- 객체 지향 관점에서 클래스를 정의하는 것을 추상화라고 정의 내릴 수 있다.
ex) 물고기, 사자, 뱀 = 동물 or 생물 >> 동물 or 생물이라고 묶는 것을 추상화
장점
- 코드의 재활용성이 높음
- 코딩이 절차지향보다 간편함
- 디버깅이 쉬움
단점
- 처리속도가 절차지향보다 느림
- 설계에 많은 시간소요가 들어감
출처
https://blog.naver.com/gitacademy01/222394033958
https://jwprogramming.tistory.com/121
https://brownbears.tistory.com/407
https://88240.tistory.com/228