1) 용어
class Planet{
name, location, distanceFromSun // data/state/fields
revolve(), rotate() //actions/behaviot/methods
}
Planet earth = new Planet();
Planet venus = new Planet();
(1) 클래스란?
: 개체에 포함된 데이터와 수행할 수 있는 작업을 지정할 수 있습니다.
:ex) 사람이 클래스라면 객체는 클래스의 인스턴스입니다.
: Person 클래스는 사람 및 해당 클래스의 각 개체와 해당 클래스의 각 인스턴스와 관련된 속성을 지정합니다.
: 사람들은 클래스의 속성에 대해 다른 값을 가질 수 있습니다.
: 요소 데이터, 상태 및 필드는 모든 개체의 데이터입니다.
2) 운동
(1) 온라인 쇼핑 시스템의 객체는 무엇이며 각 객체와 관련된 데이터는 무엇입니까? 어떤 조치를 취할 수 있습니까?
온라인 쇼핑 시스템
고객
: 이름 주소
: login(), logout(), selectProduct(제품)
쇼핑 벤처
: 기사
: 추가(항목), 제거(항목)
제품
: 이름, 가격, 수량 가능
: 주문(), 변경가격()
3) 오토바이 자바 클래스 및 객체 생성
: 오토바이 클래스 생성, 오토바이의 속도와 기어 조정
(5단 기어와 속도 조절을 위한 가속페달이 있다고 가정)

: 오토바이는 훌륭하고 Ducati와 Honda가 그 예이고 행동은 시작입니다.
4) 실습: Book Java 클래스 및 Java 객체 생성
: 제목은 ArtOfComputerProgramming, EffectiveJava, CleanCode입니다.
5) 속도 변수를 이용한 객체 상태 소개
package com.in28minutes.Oops;
public class MotorBikeRunner{
public static void main(String() args){
MotorBike ducati = new MotorBike();
MotorBike honda = new MotorBike();
ducati.start();
honda.start();
}
}
: 두카티와 혼다가 오브제
: 각 객체에는 ‘State’와 ‘Action’이 있습니다.
: 조건이 변경될 수 있습니다. 예) Ducati는 80km/h에서 113km/h로 달릴 수 있습니다.
(1) 상태 오토바이 만들기
package com.in28minutes.oops;
public class MotorBike{
//state
int speed;
//behaviour
void start(){
System.out.println("Bike Started");
}
}
package com.in28minutes.Oops;
public class MotorBikeRunner{
public static void main(String() args){
MotorBike ducati = new MotorBike();
MotorBike honda = new MotorBike();
ducati.start();
honda.start();
ducati.speed = 100;
honda.speed = 80;
ducati.speed = 20;
honda.speed = 0;
}
}
: MotorBike 클래스에서 ducati 인스턴스를 생성하면 메모리에 기록되고
이것은 Ducati 속도 값을 위한 공간을 만듭니다.
| 두카티 | |
| 속도 | 100 -> 20(상태 변경) |
| 혼다 | |
| 속도 | 80 -> 0 |
,,
6) setter 방식을 사용한 캡슐화에 대한 기본적인 이해
: MotorBike 클래스의 문제점은 MotorBikeRunner 클래스가 MotorBike 인스턴스 변수에 직접 액세스할 수 있다는 것입니다. MotorBikeRunner는 별도의 클래스이기 때문에 좋지 않습니다.
: 독립적인 클래스이지만 MotorBikeRunner 클래스의 내부 변수에 접근합니다.
: 이는 MotorBike 클래스만 특정 클래스의 데이터에 액세스해야 한다는 개념인 소위 “캡슐화”를 파괴합니다. 다른 클래스는 이 클래스의 동작, 즉 메서드를 통해 이 데이터에 액세스해야 합니다.