JAVA공부 04 ch.06 객체지향 프로그래밍 1
1. 객체지향 프로그래밍
1.1 객체지향 언어
객체지향 언어의 주요 특징
1. 코드의 재사용성이 높다.
새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
2. 코드의 관리가 용이하다.
코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
3. 신뢰성이 높은 프로그래밍을 가능하게 한다.
제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며,
코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지할 수 있다.
2. 클래스와 객체
2.1 클래스와 객체의 정의와 용도
클래스
클래스의 정의: 클래스란 객체를 정의해 놓은 것이다.
클래스의 용도: 클래스는 객체를 생성하는 데 사용된다.
객체
객체의 정의: 실제로 존재하는 것. 사물 또는 개념
객체의 용도: 객체가 가지고 있는 기능과 속성에 따라 다름
유형의 객체: 책상, 의자, 자동차, TV와 같은 사물
무형의 객체: 수학공식, 프로그램 에러와 같은 논리나 개념
2.2 객체와 인스턴스
인스턴스화 (instantiate) 클래스로부터 객체를 만드는 과정
인스턴스 (instance) 어떤 클래스로부터 만들어진 객체를 이르는 말
2.3 객체의 구성요소 - 속성과 기능
속성(property): 멤버변수(member variable), 특성(atttribute),
필드(field), 상태(state)
기능(function): 메서드(method), 함수(function),
행위(behavior)
2.4 인스턴스의 생성과 사용
인스턴스의 생성
클래스명 변수명; // 클래스의 객체를 참조하기 위해 참조변수를 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
Tv tv;
t = new Tv();
인스턴스의 생성 및 사용의 예시
class Tv {
String color;
boolean power;
int channel;
void power() { power = !power; }
void channelUp() { ++channel; }
void channelDown() { --channel; }
}
class TvTest {
public static void main(String args[]) {
Tv t;
t = new Tv(); //인스턴스의 생성
t.channel = 7;
t.channelDown(); //인스턴스의 사용
System.out.println("현재 채널은 " + t.channel + " 입니다.");
}
}
“인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야한다.”
2.5 객체 배열
많은 수의 객체를 다룰 수 있는 배열 예시
Tv tv1, tv2, tv3; // 객체 생성
Tv[] tvArr = new Tv[3]; // 객체 배열 생성
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();
2.6 클래스의 또 다른 정의
1. 데이터와 함수의 결합 아래는 변수 배열 구조체 클래스의 정의들이다.
1. 변수: 하나의 데이터를 저장할 수 있는 공간
2. 배열: 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
3. 구조체: 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간
4. 클래스: 데이터와 함수의 결합
2. 사용자 정의 타입 프로그래밍 언어에서 제공하는 자료형외에 프로그래머가 서로 관련된 변수들을 묶어서 하나의 타입으로 새로 추가하는 것을 사용자 정의 타입이라고 한다.
따라서 자바와 같은 객체지향언어에서는 클래스가 곧 사용자 정의 타입이다.
댓글남기기