본문 바로가기

Language/Java 기본

객체 지향프로그래밍 (Object Oriented Programming)

『 OOP 특징 』

 

Class : object를 제작하기 전 설계하는 도면 ( Object화를 위해 필요 )

 

object: Class를 가지고 실체화 시킨것 ( Class 를 기반으로 실제 메모리에 할당됨)

# object 는 instant (인스턴스) 라고도 함.

 

 

즉, Class를 실체화 시킨 Instant, 인스턴스화 라고 한다.

클래스를 인스턴스화 한 것 - 객체

 

 

【 Object 】

 

Field (속성) -> 데이터 : 이름,키,나이,성별

 

Method(행동) -> 논리 : 걷는다, 먹는다, 계산하다  -> 객체가 하는 행위,행동 ( 기능 ) 

 

 

『 OOP 의 특징 』

 

「추상화(Abstract)」

객체에서 공통된 속성[특성,데이터]과 행위[메서드]를 추출하는 기법, 필요한 정보를 위주로 간추려 구성.

코드 상에서 로직 부분을 제외한 선언 부분만을 설계 

 

「캡슐화[모듈화](Encapsulation)」

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

=> 허가받지 않은 외부 사용자가 특정 속성이나 메서드를 사용자가 조작할 수 없도록 숨겨놓은 것.

 

개발자는 프로그램이 어떻게 동작하는지 알지만, 사용자 입장에서는 내부를 알 수 없고 표면만 보이게끔 하는 것.

 

 

ex:  Scanner sc = new Scanner() ; 에서 new는 생성자 이며, 인스턴스화를 위해 사용한다. [객체의 생성 = 인스턴스화 ]

당장 Scanner.nextInt() 의 nextInt(); 만 해도 공개된 인터페이스이며, 이를 캡슐화된 메서드라 한다. (내부는 알지 못한다)

 

「 상속(Inheritance) 」

 

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

 

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

 

ex: 도시락 빈공간 -> 반찬, 반찬은 도시락 빈공간에 대한 정보가 있다.

 

「 다형성(Polymorphism) 」

 

하나의 객체를 가지고 여러 객체의 기능을 조작할 수 있다.

ex: ) tv와 프로젝터는 둘 다 on/off 기능이 있는 가전제품으로,  리모콘은 tv와 프로젝터에 대해 동시조작이 가능하며 이것을 다형성을 제공한다고 한다.

 

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

 

상위 클래스의 동작을 하위클래스에서 재정의하여 사용하는 것 또한 다형성이다 == 오버라이딩(Overrideng)

 

정보은닉 :

 

 

『  OOP 장점 』

 

코드 재사용

유지보수 용이

생산성 향상

'Language > Java 기본' 카테고리의 다른 글

메서드 2  (0) 2021.01.08
클래스와 객체  (0) 2021.01.07
메서드  (0) 2021.01.07
배열의 사용  (0) 2021.01.05
do ~ While 문  (0) 2021.01.04