반응형
1. 객체지향 언어
- 기본 개념은 '실제 세계는 사물( 객체 )로 이루어져 있으며 발생하는 모든 사건들은 사물 간의 상호작용이다.'라는 것이다.
- 실제 사물의 속성과 기능을 분석한 다음 데이터( 변수 )와 함수로 정의함으로써 실제 세계를 컴퓨터 속에 옮겨 놓은 것과 같다.
- 객체지향 언어의 주요 특징
- 코드의 재사용성이 높다.
새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. - 코드의 관리가 용이하다.
코드 간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다. - 신뢰성이 높은 프로그래밍을 가능하게 한다.
제어자의 메소드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다.
- 코드의 재사용성이 높다.
2. 클래스와 객체
- 클래스와 객체의 정의와 용도
- 클래스란 객체를 정의해 놓은 것이며 클래스는 객체를 생성하는 데 사용된다.
- 객체의 사전적인 정의는 실제로 존재하는 것이다.
- 객체지향 이론에서는 사물과 같은 유형적인 것뿐만 아니라 개념이나 논리와 같은 무형적인 것들도 객체로 간주한다.
- Ex)
클래스 객체 제품 설계도 제품 TV설계도 TV 붕어빵 기계 붕어빵
- 객체와 인스턴스
- 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스( instance )라고 한다.
- TV는 TV 클래스의 인스턴스이다.
TV는 객체이다.( 엄격히 구분할 필요는 없다. )
- 객체의 구성요소 - 속성과 기능
- 객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있으며 일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다. 즉, 속성은 기능의 집합이라고 할 수 있다.
- 객체가 가지고 있는 속성과 기능을 그 객체의 멤버( member )라고 한다.
- 클래스는 객체를 정의한 것이므로 클래스로부터 객체를 생성하면 정의된 속성과 기능을 가진 객체가 만들어지는 것이다.
* 속성 ( property ), 멤버 변수 ( member variable ), 특성 ( attribute ), 필드 ( field ),
상태 ( state )
* 기능 ( function ), 메소드 ( method ), 함수 ( function ), 행위 ( behavior )
- 인스턴스의 생성과 사용
- 클래스로부터 인스턴스를 생성하는 방법은 아래와 같이 여러 가지가 있다.
클래스 변수명; 클래스의 객체를 참조하기 위해 참조 변수 선언 변수명 = new 클래스명(); 클래스의 객체를 생성한 후, 객체의 주소를 참조 변수에 저장 - 인스턴스는 참조 변수를 통해서만 다룰 수 있으며, 참조 변수의 타입은 인스턴스의 타입과 일치해야 한다.
- 같은 클래스로부터 생성되었을지라도 각 인스턴스는 서로 독립적이다.
- 참조 변수는 STACK에 생기고 뒤에 new 클래스명();은 HEAP에 들어간다.
- 클래스로부터 인스턴스를 생성하는 방법은 아래와 같이 여러 가지가 있다.
- 객체 배열
- 객체 역시 배열로 다루는 것이 가능하며 이를 '객체 배열'이라고 한다.
* 각 배열에 해당하는 인스턴스는 독립적으로 이루어져 있다.
- 객체 역시 배열로 다루는 것이 가능하며 이를 '객체 배열'이라고 한다.
- 클래스의 또 다른 정의
- 클래스 - 데이터와 함수의 결합
변수 -> 배열 -> 구조체 -> 클래스 - 클래스 - 사용자 정의 타입( user- defined type )
프로그래밍 언어에서 제공하는 자료형 외에 프로그래머가 서로 관련된 변수들을 묶어서 하나의 타입으로 새로 추가하는 것을 사용자 정의 타입이라고 한다.
- 클래스 - 데이터와 함수의 결합
반응형
'웹개발 > JAVA' 카테고리의 다른 글
[JAVA] 오버로딩( Overloading ), 생성자( Constructor ), 변수의 초기화 (0) | 2022.01.18 |
---|---|
[JAVA] 변수와 메소드 (1) | 2022.01.16 |
[JAVA] 배열( array ) (0) | 2022.01.14 |
[JAVA] 제어문( 조건문, 반복문 ) (0) | 2022.01.12 |
[JAVA] 연산자( Operator ) (2) | 2022.01.08 |