본문 바로가기

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

인포꿀팁 발행일 : 2020-07-31

절차지향 프로그래밍 Procedural Oriented Programming

문제를 해결하는 절차(알고리즘)에 따라서 순차적인 처리가 중요시 되는 구조

 

장점 :

처리 속도가 빠름

 

단점 : 

코드양이 많아질수록 재사용성과 유지보수 어려움

 

특징 :

  • 행동(코드) 중심
  • 처리해야 할 명령어를 결정하고 필요한 데이터 요청
  • TOP-DOWN 방식으로 설계
  • 대규모 프로그래밍 환경 대응 미흡
  • 속성(데이터)의 종류에 따라 함수(기능)이 달라짐. 즉 데이터와 함수가 분리됨.
  • 새로운 데이터(속성)추가시 전체 프로그래밍 수정이 요구됨 = 유지보수 어려움

 

객체지향 프로그래밍 OOP :  Object-Oriented Programming 

현실 세계의 개체 Entity를 속성과 메소드로 결합된 형태의 객체로 표현하여 개발하는 방법

특징 :

  • 데이터 (상태) 중심
  • 관리하는 데이터를 정의하고 이에 필요한 명령어 추가
  • 성능보다는 개발의 편리성과 효율성을 높이는데 목적
  • 쉬운 프로그램의 개발로 인한 생산성 향상 시킬 수 있다.
  • 프로그램 모듈을 재사용 가능
  • 프로그램의 확장 및 유지 보수 용이

 

객체란?

우리 주위에서 쉽게 접할 수 있는 모든 물리적 사물 또는 실체를 가리키는 말

객체는 특성과 행위, 정체성 등 세가지 특징이 있다.

  • 특성 : 해당 객체에 저장된 정보
  • 행위 : 객체가 행동하거나 반응하는 방법 결정
  • 정체성 : 다른 객체와 구별 짓게하는 식별 값

객체는 그 객체에 상태를 나타내는 변수행동을 구현하는 메소드의 소프트웨어적인 모듈

 

객체의 정의

- 개발 시간 : 레퍼런스 변수로 정의

- 실행 시간 : 인스턴스로 정의

 

객체의 구성

속성의 값을 나타내는 데이터(상태)와 데이터를 변경하거나 조작할 수 있는 메소드로 구성

 

상태와 행동

 

객체지향 구성요소

클래스(Class)

클래스는 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 속성(필드)와 메소드를 정의하는 일종의 틀

즉, 클래스는 객체를 정의하기 위한 속성과 메소드로 구성된다.

 

개발자 관점에서 정의한다면..

어떤 특정 종류의 객체들에 대해 일반적으로 적용할 수 있는 속성(변수)과 메소드를 정의한 소프트웨어적인 설계도 또는 프로토타입이다.

 

속성(Attribute)

객체의 데이터

 

메소드(Method)

클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 행위

 

추상화 Abstraction

객체에서 공통된 속성과 행위를 추출하는 것 => 모델링

현실 세계의 사물을 데이터적인 측면과 기능적인 측면을 통해서 정의하는 것=>데이터 추상화

 

***이때 데이터가 가장 중요하다.****

캡슐화 Encapsulation

객체의 속성 field와 행위 (메소드)를 하나로 묶고, 실제 구현 내용을 외부에 감추어 은닉한다.

시스템의 구성단위를 외부와 소통하는 인터페이스 부분과 실제로 작동하는 구현부를 분리하여 인터페이스는 공개하고 구현부는 감추는 것이다.

정보은닉 Information Hiding

'Language > JAVA' 카테고리의 다른 글

[TIL] 참조 변수  (0) 2020.07.31
[TIL] 클래스  (0) 2020.07.31
[TIL] 배열의 복사  (0) 2020.07.31
[TIL] 배열 예제  (0) 2020.07.30
[TIL] 2차원 배열  (0) 2020.07.30

댓글