[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
  • 자바의 정석