본문 바로가기

Java

TechStudy - 01.OOP란 ?

OOP(Object Oriented Programming)이란?

* 실제 세계를 모델링 하여 소프트웨어를 개발하는 방법
* 프로그램을 수많은 '객체'라는 기본 단위로 나누고 이 객체들의 상호작용으로 서술하는 방식이다.
* 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여래 개의 독립된 단위 즉 '객체'들의 모임으로 파악하고자 한다.
* 객체를 데이터 묶음으로만 착각하기 쉬운데, 그보다는 하나의 '역할'을 수행하는 메소드와 데이터의 묶음으로 봐야한다. 

* 컴퓨터 프로그래밍의 패러다임 중 하나이다.

* 마치 컴퓨터 부품을 하나씩 사다가 컴퓨터를 조립하는 것과 같은 방법이다.


OOP(Object Oriented Programming)장점?

* 코드의 중복을 어느정도 줄일 수 있다. 

* 코드를 재사용하기 쉽다.

* 업그레이드가 쉽다.

* 디버깅이 쉽다.

* 신뢰성 있는 소프트웨어를 쉽게 작성할 수 있다. 

* 코드의 역할 분담을 좀 더 확실하게 할 수 있다. -> 가독성이 높아질 수 있다. 



OOP(Object Oriented Programming)단점?

* 처리속도가 상대적으로(절차 지향 프로그래밍에 비해서) 느리다.

* 객체가 많으면 용량이 커질 수 있다.

* 설계시 많은 시간과 노력이 필요하다.

* 어떤 모듈에 있는 하나의 기능만 필요하더라도 모듈 전체를 가져와야한다 -> 절차지향 프로그래밍보다 프로그램 사이즈가 커질 수 있다.

* 메소드를 통해서만 접근이 가능하다 -> 데이터에 대한 접근도 상대적으로 절차지향보다 느려질 가능성이 있다.

OOP(Object Oriented Programming) 3대 특성?

* 캡슐화
데이터와 알고리즘(코드)가 하나의 묶음으로 정리된으로써 개발자가 만들었으며, 관련된 코드와 데이터가 묶여있고 오류가 없어사용이 편리하다. 데이터를 감추고 외부 세계와의 상호작용은 메소드를 통하는 방법이다.
* 상속
이미 작성된 클래스를 이어 받아서 새로운 클래스를 생성하는 기법으로 위에서 말한 기존 코드를 재활용하여 사용하는 것을 의미한다. 
* 다형성
하나의 이름(방법)으로 많은 상황에 대처하는 기법이다. 개념적으로 동일한 작업을 하는 함수들에 똑같은 이름을 부여할 수 있으므로 코드가 더 간단해지는 효과가 있다. 



3줄 요약

실제 세계를 모델링하여 소프트웨어를 개발하는 방법이다. 프로그래밍 패러다임 중 하나이다. 프로그램을 수많은 객체의 단위로 나누고 객체간의 상호작용으로 서술하는 방식이다. 절차적 프로그래밍은 순서대로(물이 위에서 아래로 흐르는 방식) 프로그램을 짜는 방식인데 그와 달리 순서가 없이 객체 단위로 프로그램을 짜서 이어주는 방식이라서 현실 세계에서 일을 처리하는 방식과 유사하다. 


'Java' 카테고리의 다른 글

스프링 입문을 위한 자바 객체 지향의 원리와 이해 -1장  (0) 2019.05.28
TechStudty -03 HTTP 프로토콜이란?  (0) 2019.03.11
제네릭  (0) 2019.02.10
Class.forName()의 동작 원리  (0) 2019.01.23
Thread란?  (0) 2019.01.04