자바_객체지향언어
객체지향이론의 기본 개념
실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.
객체지향언어가 갖는 장점
1. 코드의 재사용성이 높다.
새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
2. 코드의 관리가 용이하다.
코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
3. 신뢰성이 높은 프로그래밍을 가능하게 한다.
제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.
이러한 객체지향언어의 장점은 프로그램의 개발과 유지보수에 드는 시간과 비용을 획기적으로 개선하였다.
클래스와 객체
1. 클래스의 정의와 용도
클래스의 정의 : 클래스란 객체를 정의해 놓은 것이다.
클래스의 용도 : 클래스는 객체를 생성하는데 사용된다.
2. 객체의 정의와 용도
객체의 정의 : 실제로 존재하는 것. 사물 또는 개념.
객체의 용도 : 객체가 가지고 있는 기능과 속성에 따라 다름
클래스와 객체의 관계를 우리가 살고 있는 실생활에서 예를 들면, 제품의 설계도(클래스)와 제품(객체)과의 관계라고 할 수 있다.
객체와 인스턴스
1. 인스턴스
클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.
2. 객체
객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있다.
그리고 객체가 가지고 있는 속성과 기능을 그 객체의 멤버(구성원, member)라 한다.
속성(property) : 멤버변수, 특성, 필드, 상태 등
기능(function) : 메서드(method), 함수(function) 등
3. 인스턴스의 생성과 사용
클래스명 변수명; //클래스의 객체를 참조하기 위한 참조변수를 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성한 후, 객체의 주소를 참조변수에 저장
public class Tv {
// Tv의 속성(멤버변수)
String color; // 색상
boolean power; // 전원상태(On/Off)
int channel; // 채널
// Tv의 기능(메서드)
void power() {
power = !power;
} // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() {
++channel;
} // TV의 채널을 높이는 기능을 하는 메서드
void channelDown(){
--channel;
} // TV의 채널을 낮추는 기능을 하는 메서드
}
public class TvTest {
public static void main(String[] args) {
Tv t; // Tv인스턴스를 참조하기 위한 변수 t를 선언
t = new Tv(); // Tv인스턴스를 생성한다.
t.channel = 7; // Tv인스턴스의 멤버변수 channel의 값을 7로 한다.
t.channelDown(); // Tv인스턴스의 메서드 channelDown()을 호출한다.
System.out.println("현재 채널은 " + t.channel + " 입니다.");
}
}
Tv t; // Tv클래스 타입의 참조변수 t를 선언한다.
t = new Tv(); // Tv인스턴스를 생성한 후, 대입연산자(=)에 의해서 생성된 객체(Tv인스턴스)의 주소값이 t에 저장된다.
인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야 한다.
이는 즉 Tv클래스의 인스턴스와 Tv클래스 타입의 참조변수가 같은 클래스 타입이어야 한다고 표현한 것이다.
객체 배열
public class Tv {
String color;
boolean power;
int channel;
void power() {
power = !power;
}
void channelup() {
++channel;
}
void channelDown() {
--channel;
}
}
public class TvTest4 {
public static void main(String[] args) {
Tv [] tvArr = new Tv[3]; // 길이가 3인 Tv객체 배열
// Tv객체를 생성해서 Tv객체 배열의 각 요소에 저장
for(int i = 0; i < tvArr.length; i++) {
tvArr[i] = new Tv(); /// Tv의 객체의 주소값이 배열 tvArr[i]에 저장
tvArr[i].channel = i + 10; // tvArr[i]의 channel에 i + 10을 저장
}
for(int i = 0; i < tvArr.length; i++) {
tvArr[i].channelup(); // tvArr[i]의 메서드를 호출. 채널이 1증가
System.out.printf("tvArr[%d].channel=%d%n", i, tvArr[i].channel);
}
}
}
다른 언어에서 배운 배열에 대한 내용을 객체의 배열로서 쓸 수 있다.
모든 배열에서 그렇듯이 객체배열도 같은 타입의 객체만 저장할 수 있다.
참고 자바의 정석 p230 ~ p241
Author And Source
이 문제에 관하여(자바_객체지향언어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@larry_dino/자바저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)