Lai_Khan
개발 & 공부 일지
Lai_Khan
전체 방문자
오늘
어제
  • 전체보기 (69)
    • 공부 (60)
      • 자료구조 & 알고리즘 (4)
      • 웹 (1)
      • JAVA (3)
      • Spring (8)
      • JPA (0)
      • 네트워크 (4)
      • Kubernetes (4)
      • Typescript (5)
      • React (1)
      • 기타 (3)
      • [부스트코스] 웹 프로그래밍 (13)
      • 정보처리기사 (1)
      • 백준 2020년 1~2월 알고리즘 (12)
    • 프로젝트 (0)
    • 취준 (1)
    • 책 (3)
    • 잡담 (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • kubernetes
  • Spring
  • 객체
  • java
  • 코드리뷰
  • 브라우저
  • 벡엔드
  • 클래스
  • OutOfPath
  • http
  • 웹
  • proxy
  • typescript
  • API
  • 스프링
  • 자바
  • 백엔드
  • 부스트코스
  • 네트워크
  • JPA

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Lai_Khan

개발 & 공부 일지

[클래스]  객체지향 프로그래밍
공부/JAVA

[클래스] 객체지향 프로그래밍

2020. 6. 3. 22:56
[이것이 자바다] 책으로 공부하고 정리하는 글

 

객체지향 프로그래밍

OOP = Object Oriented Programming

객체를 만들고 이를 조립해 완성된 프로그램을 만드는 프로그래밍 기법

 

객체(Object)란?

물리적 혹은 추상적인 것들 중 속성과 동작을 가지는 모든 것.

객체는 필드(속성)와 메소드(동작)로 구성된 자바 객체로 모델링 할 수 있다.

현실세계의 객체를 소프트웨어 객체로 만드는 과정을 소프트웨어 객체 모델링이라고 한다.

 

객체의 상호작용

객체들은 서로 간에 메소드를 사용해 데이터를 주고 받는다.

객체 지향 프로그램에서 객체는 다른 객체와 여러 관계를 맺고 있다.

관계의 종류

  • 집합 관계 : 완성품과 부품의 관계 (ex: 자동차 - 엔진, 타이어, 핸들)
  • 사용 관계 : 객체가 다른 객체를 사용하는 관계 (ex: 사람 - 자동차)
  • 상속 관계 : 종류 객체와 구체적인 사물 객체의 관계 (ex: 자동차 - 기계)

 

객체 지향 프로그래밍의 특징

캡슐화

객체의 필드, 메소드를 하나로 묶고, 실제 구현 내용은 외부로부터 감추는 것을 말한다.

외부 객체는 객체 내부의 구조를 알지 못하며, 객체가 노출하는 필드와 메소드만 사용할 수 있다.

 

필드와 메소드를 캡슐화하여 보호하는 이유는 외부의 잘못된 사용으로 인해 객체가 손상되지 않도록 하는 데 있다.

자바 언어는 필드와 메소드의 노출 여부를 결정하기 위해 접근제한자를 사용한다.

 

상속

상위(부모) 객체의 필드와 메소드를 하위(자식) 객체에게 물려주는 것.

하위 객체는 상위 객체를 확장해서 추가적인 필드와 메소드를 가질 수 있다.

 

상속의 효과

  • 상위 객체를 사용해 하위 객체를 빨리 개발할 수 있다. 
  • 반복된 코드의 중복을 줄여준다.
  • 유지 보수의 편리성을 제공해준다.
  • 객체의 다형성을 구현할 수 있다.

= 생산성 ↑. 유지보수 편함.

 

다형성

같은 타입이지만 실행 결과가 다양한 객체를 대입할 수 있는 성질.

ex) 부모 타입에는 모든 자식 객체가 대입, 인터페이스 타입에는 모든 구현 객체가 대입

 

객체를 부품화시킬 수 있고, 유지보수가 용이하다는 효과가 있다.

 

다형성을 구현하는 방법에는 상속과 인터페이스 2가지가 있다.

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'공부 > JAVA' 카테고리의 다른 글

[클래스] Class(2)  (0) 2020.06.04
[클래스] Class (1)  (0) 2020.06.04
    '공부/JAVA' 카테고리의 다른 글
    • [클래스] Class(2)
    • [클래스] Class (1)
    Lai_Khan
    Lai_Khan

    티스토리툴바