대규모 프로젝트에 쓰이게 된다. 여러 개의 독립된 단위 객체들의 모임으로 파악하고자 하는 것 각각의 객체는 메시지를 주고 받고 메시지를 처리한다 컴퓨터가 수행하는 작업을 객체들간의 상호작용으로 표현 객체들의 집합으로 프로그램 작성
Class (클래스)
Object (객체)
객체를 정의해 놓은 것 객체를 정의하는 틀 또는 설계도
Created from the Class 클래스의 인스턴트
Field : 해당 클래스 내에 정의된 변수를 의미, 졍의된 변수는 객체의 특성을 나타냄
설계도를 통해 만들어진 것
Method : 객체가 행해야 하는 작업을 기술한 것, 객체의 기능
객체 지향 프로그래밍의 특징
추상화(Abstraction) : 객체에서 공통된 속성과 행위를 추출하는 기법 코드 상에서 구현(로직) 부분을 제외한 오직 선언부분만을 설계 상세한 정보는 무시하고 필요한 정보들만 간추려서 구성
캡슐화(Encapsulation) : 관련된 필드(속성)와 메소드(기능)을 하나로 묶고, 실제 구현 내용을 외부로부터 감추는 기법 (정보 은닉) 만일의 상황(타인이 외부에서 조작)을 대비해서 특정 속성이나 메소드를 사용자가 조작할 수 없도록 숨겨놓은 것 외부에서는 공개된 메소드(기능)의 인터페이스를 통해 접근 가능
상속 (Interitance) : extends (명) 기존 코드를 재사용하거나 재정의(오버라이딩) → 재사용 + 확장
상속의 필요성
기존 클래스(상위클래스)의 변수와 코드를 재사용 하여 새로운 클래스(하위클래스) 를 생성 → 코드의 중복 감소, 클래스 간결화
먼저 작성된 검증된 프로그램을 재사용 → 신뢰성 있는 프로그램 쉽게 개발
클래스간 계층적 분류 및 관리 →유지보수 용이
상속 특징
자바 상속은 다중 상속을 지원하지 않는다. →하나의 슈퍼클래스만 가질 수 있음
상속의 횟수에 제한을 두지 않는다.
최상위 클래스는 Object이다.
다형성 (Polymorphism) : 사전적 의미 : 다양한 형태로 나타날 수 있는 능력 같은 기능(메소드)을 호출하더라도 객체에 따라 다르게 동작하는 것 상위클래스의 동작을 하위클래스에서 다시 정의하여 사용하는 것(오버라이딩, Overrding) 또한 다형성이라고 볼 수 있다.
객체 지향 프로그래밍의 장점
a. 신뢰성 있는 소프트웨어를 쉽게 작성할 수 있다. b. 코드를 재사용하기 쉽다. c. 유지보수가 용이하다 d. 직관적인 코드 분석이 가능하다. e. 소프트웨어 생산성이 향상된다.