[Java] 1. 객체지향 언어의 특징
객체 개념, 객체지향언어의 특징과 객체 지향 프로그래밍(OOP)
1. 객체 (Object)
1-1. 객체란?
- 현실 세계에 존재하는 모든 것, 사물 또는 추상적 개념
- 물리적 존재(고객, 계좌, 상품), 추상적(상담, 신청, 승인, 실행, 상환)
- 객체는 필드(속성)과 메서드(기능)으로 구성된 객체로 구현
2. 객체지향언어
객체지향이론은 캡슐화, 상속, 다형성, 추상화 개념을 중심으로 발전한 프로그래밍 언어를 객체향언어이다.
2-1. 객체지향언어의 특징
캡슐화(Encapsulation)
- 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법
- 객체의 필드, 메서드를 하나의 객체로 만들고, 데이터와 실제 구현 내용을 숨기는 것
- 외부의 잘 못된 사용으로 객체 보호
- 자바에서 접근제어자가 해당 역할
상속(Inheritance)
- 부모의 재산을 자식에게 모두 물려주는 행위(상위 클래스의 모든걸 하위 클래스가 모두 물려받는 것)
- 자바에서 상위(부모) 객체의 필드와 메서드를 하위(자식) 객체에서 사용이 가능
- 상위 객체를 재사용, 코드 중복 줄여줌, 객체의 다형성 구현
다형성(Polymorphism)
- 상속과 연관이 있는 개념으로
한 객체가 다른 여러형태(객체)로 재구성 되는 것
을 말함 - 다형성의 예로 대출시에 대출상품에 따라 실행결과는 다르게 나오고, 자동차의 타이어를 각 브랜드사 타이어 사용에 따라 성능이 다르게 나온다.
- 자바에서 예로 오버로딩(overloading)와 오버라이딩(overriding)
오버라이딩
: 상위 클래스가 갖고 있는 메서드를 하위 클래스가 재정의해서 사용하는 기술오버로딩
: 같은 이름의 메서드 여러 개를 가지면서 매개변수의 유형과 개수가 다르도록 하는 기술
2-2. 객체지향언어의 장점
- 자연적인 모델링 : 일상 속의 모든것을 객체로 모델링 했기 때문에 객체의 기능과 객체들간의 관계를 생각하면 그대로 자연스럽게 구현이 가능
- 재사용성 : 상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있음
- 생산성 향상 : 잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상
- 유지보수 : 프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 용이
3. 객체 지향 프로그래밍 ( OOP )
객체의 관점에서 프로그래밍 하는 것을 의미
한다.
1) 프로그래밍 언어를 통해서 객체 정의 2) 각 객체들의 기능들을 구현 3) 이들의 객체들이 서로 상호작용(메세지(데이터) 전달)을 프로그래밍으로 구현
[참고]
- https://radait.tistory.com/4
- 자바의 정석