흔히 자바는 객체지향언어 이고 중요한 것은 "객체" 라고 많이들 말한다.
그러면 객체는 무엇이고 객체지향언어의 장점은 무엇인가?? 라는 궁금함이 있다.
객체
자바에서 instance 라고 불리며 사전적 정의는 "실제로 존재하는 것" 이다.
하지만 자바를 공부하며 이게 무슨 소린지 이해가 안되기도 한다. 단순히 자바 클래스에 저장된 내용대로 메모리에 생성된 것 이라고 생각하자.
우리집에 있는 TV를 예로 쉽게 말하자면 TV의 속성(색깔, 브랜드 등)이 다 다르고 기능(전원켜는 기능 및 채널을 옮기는 기능)들이 있을 것이다.
여기서 속성 = 변수 | 기능 = 메서드 선언 이라고 알고 넘어가면 이해하기 쉽다.
이러한 것들을 "클래스"에 기본적으로 담아두고 main에서 객체 생성 후 가져다 사용하거나 변경할 수 있다.
아래에서 코드를 사용해 보겠다.
1.
public class Tv1 {
String color;
boolean power = false;
int channel = 1;
void power() {
power = !power;
if (power) {
System.out.println("전원 ON");
} else {
System.out.println("전원 OFF");
}
}// 전원 기능
void channelUp() {
channel++;
System.out.println("채널 증가");
}// 채널 변경
}
- TV1 클래스에 속성(color, power, channel)과 기능(channelUp) 정의.
2.
public static void main (String[] arg) {
Tv1 tv = new Tv1();
}
- main 메서드에서 tv라는 변수에 Tv1인스턴스의 주소를 저장.
3.
public static void main (String[] arg) {
Tv1 tv1 = new Tv1(); // tv1 인스턴스
tv1.color = "흰색";
System.out.println("Tv1 = " + tv1.color);
Tv1 tv2 = new Tv1(); // tv2 인스턴스
tv2.color = "검정색";
System.out.println("Tv1 = " + tv2.color);
System.out.println(System.identityHashCode(tv1)); // tv1 주소 확인
System.out.println(System.identityHashCode(tv2)); // tv2 주소 확인
}
- 같은 Tv1 클래스지만 tv1, tv2 인스턴스의 값과 주소가 다른 것을 확인할 수 있다.
내가 생각하는 자바에서의 객체란 행동을 정의할 수 있는 것이다.
이를 통해 생각해본 객체지향언어의 장점은
1. 코드의 재사용성이 높다.
- 새로운 코드를 작성할 때 기존의 코드를 이용할 수 있다.
2. 코드의 관리가 용이하다.
- 코드의 변경이 많이 어렵지 않다.
그리고 지금 배운 것은 아니지만 보안, 신뢰 높은 프로그래밍을 할 수 있다.
"제어자" 라는 것과 메서드를 이용해 데이터를 보호하고 코드의 중복을 제거하여 코드 불일치로 인한 오작동 방지.
여기서 말한 제어자 또한 정말 중요한 개념이다. 만약 제어자가 없다면 내가 만든 코드 또는 프로그램이 해킹당하기 쉽게 노출될 수 있다는 뜻으로 치명적인 단점이 될 수 있을 것이다. 다음 시간에는 제어자에 대해 알아봐야 할 것 같다.
'TIL' 카테고리의 다른 글
자바 - 객체지향 프로그래밍의 4가지 특징 (캡슐화, 추상화, 상속, 다형성) (0) | 2023.02.23 |
---|---|
자바 - 상속 (0) | 2023.02.22 |
Java - 조건문 그리고 반복문. (0) | 2023.02.14 |
Java - 변수 (0) | 2023.02.13 |
해커톤 프로젝트 경험 (0) | 2023.02.12 |