728x90
반응형
1. Java
- 자바란 프로그래밍언어 + 플랫폼(프로그램이 돌아가는 하드웨어 or 소프트웨어)
- 자바 플랫폼은 Software only Platform
- 자바 프로그래밍 언어는 high-level language (기계어보다 인간의 언어에 더 가깝다)
- 작동 순서
- .java 형식의 파일로 자바 코드 작성
- javac 컴파일러를 통해 .class 로 소스 파일을 byte code로 컴파일
- jvm이 가상환경을 통해서 하드웨어 베이스의 기계어로 전환을 함.
- 자바의 Object
- 소프트웨어 bundle of related state and field
- 자바의 Class
- A class is a blueprint or prototype from which objects are created.
- 객체를 만들어내기 위한 틀
- 자바의 Inheritance
- Inheritance provides a powerful and natural mechanism for organizing and structuring your software
- 조직, 구조의 힘과 메커니즘을 제공하는 것
- 자바의 Interface
- 객체가 세상과 맺은 계약 (어떻게 클래스가 나타날 것인지?)
- 자바의 Method
- State의 할 일을 지정
객체 지향이란?
State 와 Behavior로 객체를 정의한다. 어떻게?
예를 들어 게임 내, 빌런과 주인공 캐릭터를 만들 때, 클래스를 어떻게 할 것인가? 빌런 클래스와 영웅 클래스로 객체를 생성할 것인가? 혹은 하나의 클래스로 다른 state를 통해 빌런과 주인공을 나눌 것인가?
자바는 개발 전, 이러한 고민이 필요하다.
각 객체의 관계를 고려해 클래스는 어떻게 생성을 할지? 메서드는? State는? 이 모든 것을 고려하는 것
“In object-oriented terms, we say that your bicycle is an instance of the class of objects known as bicycles.”
→ 객체가 세상과 자신의 state 와 method로 상호작용을 시작할 때 그것은 instance 이다.
소프트웨어에서는, 클래스를 통해 생성된 객체의 state, method가 실행되는 것 → instance
따라서 세상에 존재하는 혹은 존재할 객체를 먼저 만들어야 클래스가 만들어지고 그 객체들이 인스턴스로 이어질 수 있다.
class Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
void changeCadence(int newValue) {
cadence = newValue;
}
void changeGear(int newValue) {
gear = newValue;
}
void speedUp(int increment) {
speed = speed + increment;
}
void applyBrakes(int decrement) {
speed = speed - decrement;
}
void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}
해당 코드를 작성하고 실행하면 ?
→ 에러 이유는?
자바는 main 메서드 정의가 필요하다. 해당 메서드를 바탕으로 인스턴스를 만들기 때문
해당 코드에서 객체들 (cadence, speed, gear)은 private이다.
그 및 메서드 들은 public
class BicycleDemo {
public static void main(String[] args) {
// Create two different
// Bicycle objects
Bicycle bike1 = new Bicycle();
Bicycle bike2 = new Bicycle();
// Invoke methods on
// those objects
bike1.changeCadence(50);
bike1.speedUp(10);
bike1.changeGear(2);
bike1.printStates();
bike2.changeCadence(50);
bike2.speedUp(10);
bike2.changeGear(2);
bike2.changeCadence(40);
bike2.speedUp(10);
bike2.changeGear(3);
bike2.printStates();
}
}
해당 코드는 에러없이 가능하다.
→ 왜? main 메서드가 정의되어있기 때문.
C:\Users\KOSA>notepad BicycleDemo.java
C:\Users\KOSA>javac BicycleDemo.java
C:\Users\KOSA>javac BicycleDemo*
error: invalid flag: BicycleDemo.class
Usage: javac <options> <source files>
use --help for a list of possible options
C:\Users\KOSA>dir BicycleDemo*
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: 0CAE-0475
C:\Users\KOSA 디렉터리
2024-03-26 오후 05:55 512 BicycleDemo.class
2024-03-26 오후 05:55 616 BicycleDemo.java
2개 파일 1,128 바이트
0개 디렉터리 174,814,445,568 바이트 남음
C:\Users\KOSA>java BicycleDemo
cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3
반응형
LIST
'MSA 기반 풀스택 개발자 교육 > JAVA' 카테고리의 다른 글
Solid (0) | 2024.04.08 |
---|