[21.01.07 Java ]OPP (Object Oriented Programming)
<객체지향 프로그램밍이란?>
각각에 기능을 분리하여 묶어 재사용성을 높인것
▶ Class : 클래스
▷ 실제 Object를 제작하기 전 설계하는 도면
▷ Object에 집합
클래스를 기반으로실제로 메모리에 할당되며 클래스를 인스턴스화 하면 Object이다.
▶ Object : 객체
▷ Data(속성) : 데이터값
▷ Method(행동) : 연산
<객체지향프로그래밍의 특징>
▶ 추상화(abstract)
▷ 객체이서 공통된 속성(특성 or Field), 행위(행동, Method)를 추출하는 기법
▷ 코드 상에서 구형(로직)부분을 제외한 오직 선언 부분만을 설계
▷ 상세한 정보는 무시하고 필요한 정보들만 간추려서 구성
▶ 캡술화(encapsulation) + 정보은닉
▷ 관련된 필드(속성)와 메소드(기능)를 하나로 묶고, 실제 구현 내용을 외부로부터 감추는 기법(정보은닉)
▷ 만일의 상황(타인이 외부에서 조작)을 대비해서 특정 속성이나 메소드를 사용자가 조가할 수 없도록 숨겨 놓은것.
▷ 외부에서는 공개된 메소드(기능)의 인터페이스를 통해 접근할 수 있다.
▶ 상속(inheritance)
▷ 이미 작성된 클래스(상위클래스)의 특성을 그대로 이어받아 새로운 클래스(하위클래스)를 생성하는 기법
▷ 기존 코드를 그대로 재사용하거나 재정의 -> 재사용 + 확장
▶ 다형성(Polymorphism)
▷ 상속받은클래스들이 다른것을 뜻함?
▷ 사전적 의미 ' 다양한 형태로 나타날 수 있는 능력'
▷ 같은 기능(메소드)를 호출하더라도 객체에 따라 다르게 동작하는것
▷ 상위클래스의 동작을 하위클래스에서 다시 정의하여 사용하는 것 또한 다형성으로 볼 수 있다.
<객체지향프로그래밍의 장점>
▷ 신뢰성 있는 소프트웨어를 쉽게 작성할 수 있따.
▷ 코드를 재사용하기 쉽다.
▷ 유지보수가 용이하다.
▷ 직관적인 코드 분석이 가능하다.
▷ 소프트웨어 생산성이 향상된다.