본문 바로가기
JAVA

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

by 소라둥이 2020. 4. 17.

OOP

개발 시 객체 중심으로 협업과 유지보수를 위한 소프트웨어 개발 방법론, 패러다임

과거에는 절차지향, 구조적, 데이터 중심 프로그래밍이 패러다임이였으나

PC가 보급되기 시작하면서 웹 및 각종 소프트웨어의 발전이 생김.

기존의 절차지향 등 프로그래밍 방식을 사용한 시대에는 대부분 업무적으로 사용하는 프로그램이 대부분(계산기 등)

따라서 INPUT OUTPUT에 대한 문서화가 명확해야했으며 그걸 토대로 개발 및 유지보수 진행

이러한 시스템이다보니 객체지향이 굳이 필요 없었다

 

기존 방식으로는 한계가 있어 객체지향프로그래밍이 패러다임으로 발전

객체지향프로그래밍은 이미 옛날 부터 있던 개념이였다.

 

 

다형성, 추상화, 상속, 무엇을 이용해서 만들어짐

즉 OOP의 특징의 정확한 의미는 character가 아닌 ??P

개발 시 객체 중심으로 협업과 유지보수를 위한 소프트웨어 개발 방법론, 패러다임

 

과거에는 절차지향, 구조적, 데이터 중심 프로그래밍이 패러다임이였으나

 

PC가 보급되기 시작하면서 웹 및 각종 소프트웨어의 발전이 생김.

 

기존의 절차지향 등 프로그래밍 방식을 사용한 시대에는 대부분 업무적으로 사용하는 프로그램이 대부분(계산기 등)

 

따라서 INPUT OUTPUT에 대한 문서화가 명확해야했으며 그걸 토대로 개발 및 유지보수 진행

 

이러한 시스템이다보니 객체지향이 굳이 필요 없었다

 

 

 

기존 방식으로는 한계가 있어 객체지향프로그래밍이 패러다임으로 발전

 

객체지향프로그래밍은 이미 옛날 부터 있던 개념이였다.

 

 

 

 

 

흔히 아는 OOP의 특징은 다형성, 추상화, 상속, 캡슐화 이다.

OOP의 특징의 정확한 의미는 Character가 아닌 Concept이다.

Character는 태어날때 부터 가지지만 Concept는 추가되는 것이다.

OOP는 다형성, 추상화, 상속, 캡슐화를 Concept으로 생겨난 프로그래밍 방법론이라 할 수 있다.

 

다형성

- 기존 절차지향에서는 메서드이름을 중복해서 사용할 수 없었다.

특정 라이브러리를 import해서 사용 시 해당 라이브러리 안에 속한 메서드와 이름이 같다면 오류가 났었다.

따라서 aa10.1010.2020 같은 코드형태로 명명규칙을 정해 작업하였으며 규모가 커지면 커질수록 불편해졌다.

 

객체지향은 다른 패키지일 때 같은 클래스명(타입)과 메서드를 가질 수 있다.

흔히 생각하는 오버라이딩, 오버로딩 또한 같은 맥락이다.(확장)

 

추상화

- 공통 속성들을 묶는 것.

공통적으로 사용할 것들을 뭉쳐놓는다고 생각하면된다.

이를 통해 확장이 용이해진다.

 

상속

- 분리, 절차지향에서는 어떤 한 메서드에 기능이 추가로 필요할 시

내부를 직접 수정하여 작업하는 수 밖에 없었다.

예를 들어 void method()라는 메서드 안에 a, b, c라는 기능이 있다고 가정하자.

사용자 가, 나, 다 는 methode를 호출하는데 가는 a, 나는 a,b 다는 a,c를 사용하고 싶다.

기존 절차지향언어는 이럴때 사용자의 요구사항에 맞춰 내부를 수정하거나 메서드를 다시 만드는 방법밖에 없었다.

 

객체지향은 상속이라는 개념을 통해 필요한 부분들은 알아서 확장해서 사용하게 만들어 놨다.

 

캡슐화

- 접근제어자를 통한 캡슐화.

접근제어자를 통해 사용자는 불필요한 정보를 알 필요가 없어진다.

이는 정보보안뿐만 아니라 편의성을 제공한다.

하지만 캡슐화를 너무 깊숙히 진행하면 관계가 복잡해지는 경우가 생긴다.

 

특징들을 보다보면 확장이라는 말이 많이 나온다.

즉 객체지향에서 가장 중요한 것은 확장 이라 볼 수 있다.

 

 

 

'JAVA' 카테고리의 다른 글

[eclipse] Git Clone 프로젝트 서버 구동 불가 현상  (0) 2020.04.07
예외처리(Exceptoin handling)  (0) 2020.03.23
JRE와 JDK 차이점  (0) 2020.03.23