2013년 6월 30일 일요일

객체지향언어

1. 객체지향언어란?
1.1 객체지향언어의 역사
1960년대 실세계를 기반으로하는 모의실험 프로그램을
제작하는 과정에서 객체지향이론이 시작됨

1980년대 객체지향언어 C++ 탄생

1995년에 Java가 나오면서 객체지향언어가 프로그래밍 언어의 주류가 됨

1.2 객체지향언어의 특징
- 개발, 생산성이 높다.
- 재사용성, 확장성이 높다.
- 유지보수가 용이하다.

2. 클래스와 객체
2.1 정의
객체 - 실제로 존재하는 사물이나 개념, 속성을 가짐
클래스 - 각각의 객체들을 설계해 놓은 설계도

2.2 객체와 인스턴스
객체 ≒ 인스턴스(크게 구분할 필요는 없다.)
객체지향언어에서 모든 기능을 객체로 구현해야함
클래스를 객체로 만드는 과정 인스턴스화

2.3 속성과 기능
객체는 속성과 기능으로 이루어져 있음
속성은 변수(길이, 무게, 색상, 시간, 크기) - 힙(Heap) 영역에 할당
기능은 메소드(켜기, 끄기, 지우기, 추가, 수정) - 스택(Stack) 영역에 할당

2.4 인스턴스 생성/사용 방법 [참조] '.'은 멤버연산자, 멤버변수들의 변수형에 따라 자동초기화 된다.

참조변수명이 다르면 여러개의 같은 클래스를 사용할 수 있다.
2.5 클래스의 정의
클래스 - 데이터와 메소드의 결합
사용자 정의 타입으로 새롭게 사용자가 정의 할 수 있다.

3. 변수와 메소드
3.1 static이 선언된 변수
- 클래스 변수(클래스에 속한 변수다.)
- 한번만 사용될 변수에 사용
- 여러개의 인스턴스를 만들어 사용할 것이면 사용에 주의한다.

3.2 인스턴스 변수
- static이 붙지 않은 변수
- 인스턴스 생성시 각각의 개별적인 저장공간을 생성한다.
- Garbage Collection이 될 때 메모리에서 사라진다.

3.3 클래스 변수
- 클래스가 JVM 영역에 올려질 때 자동으로 생성되는 변수
- 클래스이름.클래스변수명으로 접근이 가능하다.
- 인스턴스 이름으로도 접근이 가능하지만 가능하면 클래스이름으로 접근한다.
- 같은 클래스 내의 모든 인스턴스들이 공유한다.
- 프로그램 종료시 삭제

3.4 클래스 로딩
- 하드디스크에 저장된 클래스가 선언될 때 메모리에 올라가는것
- 어떤 클래스든 클래스 로딩은 한번만 일어난다.
- 프로그램 종료시 메모리에서 해제된다.
- 정적변수라고 한다.

3.5 메모리영역(5개중 3개)
Method Area - 클래스의 메소드들, 클래스 변수 저장 영역
Call Stack - 메소드, 지역변수가 할당, 호출되는 영역
Heap - 인스턴스가 만들어지는 영역

3.6 메소드
- 여러 명령문의 집합
- 함수와 비슷한 개념
- 클래스 영역에만 정의 가능
- 하나의 메서드는 한 가지 기능만 수행하도록 작성 권장

3.7 return문
- 메소드를 종료시킨다.
- 처리된 값을 되돌려준다.
- 가능하면 return문의 수를 최소화한다.

댓글 없음:

댓글 쓰기