(Udemy) 05. 객체 지향 프로그래밍 입문

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 클래스만 특정 클래스의 데이터에 액세스해야 한다는 개념인 소위 “캡슐화”를 파괴합니다. 다른 클래스는 이 클래스의 동작, 즉 메서드를 통해 이 데이터에 액세스해야 합니다.