객체 지향언어
객체
세상 모든 것이 객체로 이루어진다. (TV, 냉장고, 컴퓨터, 사람...)
실세계 객체의 특징
- 객체마다 고유한 특성(state)와 행동(behavior)를 가짐
- 다른 객체들과 정보를 주고 받는 등, 상호작용하면서 존재
객체 지향 언어의 목적
▶︎ 소프트웨어 생산성 향상
- 컴퓨터 산업 발전에 따라 소프트웨어 생명주기가 단축됨
- 상속, 다형성, 객체, 캡슐화 등 소프트웨어 재사용을 위한 여러 장치가 내장됨 ➞ 재사용, 부분 수정 용이. 다시 만들 필요 없음
▶︎ 실세게에 대한 쉬운 모델링
- 실세계에서 발생하는 일을 프로그래밍하기 때문에, 절차나 과정보다 물체들의 상호작용으로 묘사하는 것이 용이
절차 지향 프로그래밍과 객체 지향 프로그래밍
▶︎ 절차 지향 프로그래밍
- 작업 순서 표현
- 작업을 함수로 작성한, 함수들의 집합
▶︎ 객체 지향 프로그래밍
- 객체들간의 상호작용으로 표현
- 클래스 혹은 객체들의 집합으로 프로그램 작성
객체 지향언어의 특성
1. 캡슐화
객체를 캡슐로 싸서 내부를 볼 수 없게 하는 것
목적 : 외부의 접근으로부터 객체 보호
자바의 캡슐화
- 클래스 : 객체 모양을 선언한 틀. 객체의 속성과 행동 표현
- 메소드와 필드는 모두 클래스 내에 구현
- 객체 : 클래스의 모양대로 생성된 실체(instance)
- 객체 내 데이터에 대한 보호, 외부 접근 제한
2. 상속
하위 개체가 상위 개체의 속성을 모두 가지는 관계
자바의 상속
• 부모 클래스(슈퍼 클래스)
class Animal {
String name;
int age;
void eat(){...}
}
• 자식 클래스(서브 클래스)
- extends 키워드
- 자식 클래스 객체는 부모 클래스의 멤버를 모두 가짐
class Human extends Animal {
String hobbyl
String job;
void work(){...}
}
3. 다형성
같은 이름의 메소드가 클래스나 객체에 따라 다르게 동작하도록 구현
다형성 사례
- 메소드 오버로딩 : 같은 이름이지만 다르게 작동하는 여러 메소드
- 메소드 오버라이딩 : 슈퍼클래스의 메소드를 서브 클래스마다 다르게 구현
클래스와 객체
▶︎ 클래스
- 객체를 만들어 내기 위한 설계도 혹은 틀
- 객체의 속성과 행동 표현
▶︎ 객체
- 클래스의 모양대로 생성된 실체
- 프로그램 실행 중 생성되는 실체
- 메모리 공간을 갖는 구체적인 실체
- 인스턴스(instance)라고도 부름
객체 생성 과정
'CS > 자바' 카테고리의 다른 글
자바 #6 - static과 final (1) | 2024.02.13 |
---|---|
자바 #5 - 생성자와 접근 지정자 (1) | 2024.02.09 |
자바 #3 - 자바의 배열과 예외 처리 (1) | 2024.02.04 |
자바#2 - 자바의 데이터 타입과 입력 (1) | 2024.02.04 |
자바#1 - JAVA의 시작 (JAVA의 태동과 특징) (0) | 2024.02.03 |