청년취업아카데미/Java

[21.01.07 Java ]OPP (Object Oriented Programming)

RSpring41 2021. 1. 7. 15:39

<객체지향 프로그램밍이란?>

 

각각에 기능을 분리하여 묶어 재사용성을 높인것

 

▶ Class : 클래스

실제 Object를 제작하기 전 설계하는 도면

▷ Object에 집합

클래스를 기반으로실제로 메모리에 할당되며 클래스를 인스턴스화 하면 Object이다.

 

 Object : 객체

Data(속성) : 데이터값

▷ Method(행동) : 연산

 

 

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

 

추상화(abstract) 

 객체이서 공통된 속성(특성 or Field), 행위(행동, Method)를 추출하는 기법

 코드 상에서 구형(로직)부분을 제외한 오직 선언 부분만을 설계

 상세한 정보는 무시하고 필요한 정보들만 간추려서 구성

 

 캡술화(encapsulation) + 정보은닉

▷ 관련된 필드(속성)와 메소드(기능)를 하나로 묶고, 실제 구현 내용을 외부로부터 감추는 기법(정보은닉)

만일의 상황(타인이 외부에서 조작)을 대비해서 특정 속성이나 메소드를 사용자가 조가할 수 없도록 숨겨 놓은것.

외부에서는 공개된 메소드(기능)의 인터페이스를 통해 접근할 수 있다.

 

 상속(inheritance)

이미 작성된 클래스(상위클래스)의 특성을 그대로 이어받아 새로운 클래스(하위클래스)를 생성하는 기법

기존 코드를 그대로 재사용하거나 재정의 -> 재사용 + 확장

 

 

 다형성(Polymorphism)

▷ 상속받은클래스들이 다른것을 뜻함?

▷ 사전적 의미 ' 다양한 형태로 나타날 수 있는 능력'

같은 기능(메소드)를 호출하더라도 객체에 따라 다르게 동작하는것

상위클래스의 동작을 하위클래스에서 다시 정의하여 사용하는 것 또한 다형성으로 볼 수 있다.

 

 

<객체지향프로그래밍의 장점>

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

 코드를 재사용하기 쉽다.

 유지보수가 용이하다.

 직관적인 코드 분석이 가능하다.

 소프트웨어 생산성이 향상된다.