1.객체(Object : 객체, 물건) : 독립적으로 각각 구분해서 인식할 수있는 모든 것.
ex. 키보드, 김치, 앞집아저씨, 나 등등
2.지향(Oriented) : 어떤한 것을 목표로 함
객체 지향 : 독립적으로 각각 구분해서 인식할 수 있도록하는것을 목표로 한다
3. 언어(컴퓨터에서의 언어 : Language 코드) 코딩 방식
==> 객체 지향 언어 : 독립적으로 각각 구분해서 인식할 수 있는 것을 목표로 하는 코딩 방식
- 캡슐화(Encapsulation)
- 보호역활 : 외부로부터의 접근을 막는다(정보 은닉)
- 상속(Inheritance)
- 부모님이 자식에게 물려줌(속성,기능)+자식이 이미 가지고있는것
- 다형성(Polymorphism)
- 다양한 형태를 지니는 성질
- 추상화(Abstraction)
- 구체적이지 않은 것
현실에서 객체(Object)란?
자신의 속성(값,data)과 기능(동작,행동)이 다른것들과 구분되어 식별 가능한 것
- 속성 : ex.사람의 나이,생년월일,국적....etc
- 기능 : ex.잠을 잔다, 밥을 먹는다....etc
객체지향언어란?**
독립되고 구분되는 각각의 객체로 이루어져 있으며 발생하는 모든 사건들은 객체간의 상호작용이다. 이 개념을 컴퓨터로 옮겨놓아 만들어낸것이 객체지향 언어이다.
객체의 특성(속성, 기능)에 대한 정의를 한 것 = 사용자 정의 자료형.
ex.제품의 설계도, 빵 틀
**
클래스 작성시 반드시 필요한 것
객체 지향 언어의 특징 중
추상화,캡슐화**가 적용되어야 함
코딩에서
규약 : 어떻게 하자 안지키는 경우도 있음
규칙 : 안지키면 패널티
원칙 : 위배하는 순간 큰 문제를 야기
유연성을 확보하기 위해 구체적인 것은 제거한다는 의미
작성하려는 클래스의 속성과 기능 중
프로그램에서 필요한 공통점을 추출하고, 불필요한 부분을 제거하는 과정
- 알수있는것(공통적) : 사람, 여자, 실내
- 알수없는것(구체적) : 나이, 주소, 이름
5천만명 데이터를 저장하기 위해서 5천만개의 변수를 저장할 수는 없음.
국민이라면 가지고있는 공통적인 속성을 만들어놓고
그곳에 개개인의 정보를 넣어서 사용함
코드의 유연성
코드의 중복이 낮아짐
재사용성이 높아짐(유지보수에 용이)
* "-" = private * "+" = public
추상화를 통해 정리된 데이터들과 기능을 하나로 묶어 관리하는 기법
클래스의 가장 중요한 목적인 데이터의 직접 접근제한을 원칙으로 하여
클래스 외부에서 데이터의 직접적인 접근을 막고,
대신 간접적으로 데이터에 접근할 수 메소드를 클래스 내부에 작성하는 방법
person p1;
p1.name = "홍길동"
public ==> private
new 연산자와 생성자를 사용하여 객체 생성 시 Heap 메모리 영역에 서로 다른 자료형의
데이터가 연속으로 나열/할당된 객체 공간