[Java] 객체지향 프로그래밍

정재현·2024년 1월 3일

Java

목록 보기
24/43
post-thumbnail

객체지향 프로그래밍이란?

  • 필요한 부품들을 만들고 하나씩 조립해서 하나의 완성된 프로그램을 만드는 기법

특징

캡슐화

  • 캡슐화란 속성(필드)행위(메서드)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것을 의미
  • 외부 객체에서는 캡슐화된 객체의 내부 구조를 알 수 없기 때문에 노출시켜 준 필드 혹은 메서드를 통해 접근 가능
  • 필드와 메서드를 캡슐화 하여 숨기는 이유는 외부 객체에서 해당 필드와 메서드를 잘못 사용하여 객체가 변화하지 않게 하는데 있음
  • Java에서는 캡슐화된 객체의 필드와 메서드를 노출 시킬지 감출 지 결정하기 위해 접근 제어자를 사용

상속

  • 부모 객체는 가지고 있는 필드와 메서드를 자식 객체에 물려주어 자식 객체가 이를 사용할 수 있도록 만들 수 있다.
  • 장점
    1. 각각의 객체들을 상속 관계로 묶음으로써 객체 간의 구조를 파악하기 쉬워짐
    2. 필드와 메서드를 변경하는 경우 부모 객체에 있는 것만 수정하게 되면 자식 객체 전부 반영이 되기 때문에 일관성을 유지하기 좋습니다.
    3. 자식 객체가 부모 객체의 필드와 메서드를 물려받아 사용할 수 있기 때문에 코드의 중복이 줄어들며 코드의 재사용성이 증가

다형성

  • 객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 다른 여러가지 형태로 재구성되는 것을 의미

추상화

  • 객체에서 공통된 부분들을 모아 상위 개념으로 새롭게 선언하는 것
  • 공통적이고 중요한 것들을 모아 객체를 모델링
    ex. 현실세계의 여러 종류의 자동차들이 공통적으로 가지고 있는 가속, 브레이크, 속도와 같은 것들을 모아 자동차라는 객체를 모델링

객체란?

  • 세상에 존재하는 물체를 뜻하며 식별이 가능한 것을 의미
  • 객체는 속성과 행위(메서드)로 구성
    ex. 자동차의 속성 : 회사, 모델, 가격, 속도 등
    ex. 자동차의 행위 : 가속, 브레이크, 기어변속, 조명, 경적 등

객체 간의 협력

  • 행위를 정의하는 Java의 메서드를 통해 이뤄짐
    ex. 사람 객차가 자동차 객체가 가지고 있는 가속 페달 메서드를 호출

객체 간의 관계

사용 관계

  • ex. 사람 객체는 자동차 객체를 사용

포함 관계

  • ex. 타이어 객체, 차문 객체, 핸들 객체는 자동차 객체에 포함

상속 관계

  • 공장에 자동차만 생산하는게 아니라 기차도 생산한다고 가정
  • 자동차와 기차 객체는 하나의 공통된 기계시스템 객체를 토대로 만들어진다고 가정
    → 자동차 객체와 기차 객체는 기계시스템 객체를 상속 받는 상속 관계

객체와 클래스

클래스란?

  • 객체를 생성하기 위한 설계도
  • 동일한 클래스로 여러 개의 인스턴스를 만들 수 있음

인스턴스란?

  • 클래스를 토대로 생성된 객체
  • 클래스를 토대로 인스터스를 만드는 과정을 인스턴스화라고 부름
  • 클래스를 통해 만들어진 인스턴스들을 통틀어서 객체라고 표현할 수 있음

profile
공부 기록 보관소

0개의 댓글