객체지향 프로그래밍
- 객체란?
주체가 아닌것, 주체가 활용하는 것
- 객체지향 프로그래밍이란?
주변의 많은 것들을 객체화 하여 프로그래밍 하는것
객체지향 프로그래밍의 장점
- 블록 형태의 모듈화된 프로그래밍
- 신뢰성 높은 프로그래밍이 가능
- 추가/수정/삭제가 용이하다
- 재 사용성이 높다
현실 세계 객체, 클래스, 프로그램의 객체의 관계
- 현실 세계의 객체가 갖는 속성과 기능은 추상화(abstraction) 되어 클래스에 정의된다.
- 클래스는 구체화 되어 프로그램의 객체(instance, object)가 된다.
프로그램의 클래스와 객체
- 클래스
- 객체를 정의해 놓은 것 = 객체의 설계도
- 클래스는 직접 사용할 수 없고 직접 사용되는 객체를 만들기 위한 틀을 제공
- 객체
선언 위치에 따른 변수의 종류
public class VariableTypes{
int instanceVariable
static int classVariable
public staic void mainI(String[] args){
int localVariable
for(int i=0 ; i<10 ; i++){
System.out.println(i);
}
}
}
인스턴스 멤버 변수의 특징
- 선언 위치 : 클래스 {}영역에 선언
- 변수의 생성 : 객체가 만들어질 때 객체 별로 생성
- 변수의 초기화 : 타입 별로 default 초기화
- 변수에의 접근 : 객체 생성 후 객체 이름으로 접근
VarialbeTypes vt = new VariableTypes();
vt.instanceVarible
- 소멸 시점 : Garbage Collector에 의해 객체가 사라질 때, 프로그래머가 명시적으로 소멸시킬 수 없음
클래스 멤버 변수의 특징
- 선언 위치 : 클래스 {}영역에 선언되며 static 키워드를 붙임
- 변수의 생성 : 클래스 영역에 클래스 로딩 시 메모리 등록
- 변수의 초기화 : 타입 별로 default 초기화
- 변수에의 접근 : 객체 생성과 무관하게 클래스 이름으로 접근
- 객체를 생성하고 객체 이름으로도 접근 가능하나 static에 부합하지 않음
VariableTypes.classVariable = 10;
지역 변수 & 파라미터 변수
- 선언 위치 : 클래스 영역의 {} 이외의 모든 중괄호 안에 선언되는 변수들
- 변수의 생성 : 선언된 라인이 실행될 때
- 생성 메모리 영역 : thread 별로 생성된 stack 필요
- 변수의 초기화 : 사용하기 전 명시적 초기화 필요
- 변수에의 접근 : 외부에서는 접근이 불가하므로 소속 불필요
- 소멸 시점 : 선언된 영역인 {} 을 벗어났을 때