인프런 웹 사이트의 김영한 강사님 강의를 들으며 학습한 Java 기본편 내용을 요약해 보도록 하겠습니다!
// Student.java
package class1;
public class Student {
String name;
int age;
int grade;
}
// ClassStart.java
package class1;
public class ClassStart {
public static void main(String[] args) {
Student student1 = new Student();
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;
Student student2 = new Student();
student2.name = "학생2";
student2.age = 16;
student2.grade = 80;
System.out.println("이름:" + student1.name + " 나이:" + student1.age + " 성
적:" + student1.grade);
System.out.println("이름:" + student2.name + " 나이:" + student2.age + " 성
적:" + student2.grade);
}
}
string name = “학생1”
int age=15
int grade=90
이렇게 3가지 정보의 크기 만큼의 만들어진 메모리의 주소값을 가진다.
new Student()
코드 자체에는 아무런 이름이 없다.Student
클래스를 기반으로 메모리에 실제 객체를 만드는 것이다.둘다 클래스에서 나온 실체라는 의미에서 비슷하게 사용되지만, 용어상 인스턴스는 객체보다 좀 더 관계에 초점을 맞춘 단어이다.
보통 “ student1
은 Student
의 객체이다.” 라고 말하는 대신
” student1
은 Student
의 인스턴스이다.” 라고 특정 클래스와의 관계를 명확히 할 때
인스턴스라는 용어를 주로 사용한다.
하지만 둘다 클래스에서 나온 실체라는 핵심 의미는 같기 때문에 보통 둘을 구분하지 않고 사용한다.
// VariableInit.java
package init.ex;
public class VariableInit {
int a;
}
// Student.java
package init.ex;
public class Student{
String name;
int age;
int grade;
VariableInit vi;
}
// ClassStart.java
package init.ex;
public class ClassStart{
public static void main(String[] args) {
Student student1;
System.out.println(student1.vi); // 출력 결과 : null
}
}
// MusicPlayerData.java
package oop1;
public class MusicPlayerData {
int volume = 0;
boolean isOn = false;
}
// MusicPlayerMain3.java
package oop1;
public class MusicPlayerMain3 {
public static void main(String[] args) {
MusicPlayerData data = new MusicPlayerData();
//음악 플레이어 켜기
on(data);
//볼륨 증가
volumeUp(data);
//볼륨 증가
volumeUp(data);
//볼륨 감소
volumeDown(data);
//음악 플레이어 상태
showStatus(data);
//음악 플레이어 끄기
off(data);
}
static void on(MusicPlayerData data) {
data.isOn = true;
System.out.println("음악 플레이어를 시작합니다");
}
static void off(MusicPlayerData data) {
data.isOn = false;
System.out.println("음악 플레이어를 종료합니다");
}
static void volumeUp(MusicPlayerData data) {
data.volume++;
System.out.println("음악 플레이어 볼륨:" + data.volume);
}
static void volumeDown(MusicPlayerData data) {
data.volume--;
System.out.println("음악 플레이어 볼륨:" + data.volume);
}
static void showStatus(MusicPlayerData data) {
System.out.println("음악 플레이어 상태 확인");
if (data.isOn) {
System.out.println("음악 플레이어 ON, 볼륨:" + data.volume);
} else {
System.out.println("음악 플레이어 OFF");
}
}
}
❗ 데이터와 그 데이터를 사용하는 기능은 매우 밀접하게 연관되어 있다.
각각의 메서드를 보면 대부분MusicPlayerData
의 데이터를 사용한다.
따라서 이후에 관련 데이터가 변경되면MusicPlayerMain3
부분의 메서드들도 함께 변경해야 한다.
즉, 데이터와 기능이 분리되어 있으면 유지보수 관점에서도 관리 포인트가 2곳으로 늘어난다.
// MusicPlayer.java
package oop1;
public class MusicPlayer {
int volume = 0;
boolean isOn = false;
void on() {
isOn = true;
System.out.println("음악 플레이어를 시작합니다");
}
void off() {
isOn = false;
System.out.println("음악 플레이어를 종료합니다");
}
void volumeUp() {
volume++;
System.out.println("음악 플레이어 볼륨:" + volume);
}
void volumeDown() {
volume--;
System.out.println("음악 플레이어 볼륨:" + volume);
}
void showStatus() {
System.out.println("음악 플레이어 상태 확인");
if (isOn) {
System.out.println("음악 플레이어 ON, 볼륨:" + volume);
} else {
System.out.println("음악 플레이어 OFF");
}
}
}
// MusicPlayerMain.java
package oop1;
/**
* 객체 지향
*/
public class MusicPlayerMain4 {
public static void main(String[] args) {
MusicPlayer player = new MusicPlayer();
//음악 플레이어 켜기
player.on();
//볼륨 증가
player.volumeUp();
//볼륨 증가
player.volumeUp();
//볼륨 감소
player.volumeDown();
//음악 플레이어 상태
player.showStatus();
//음악 플레이어 끄기
player.off();
}
}