『 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 장점 』
코드 재사용
유지보수 용이
생산성 향상