본문 바로가기

국비과정/JAVA

20230615 _[10일차]_03. 객체 지향 특징 & 활용

[ 객체지향 특징 ]

 

캡슐화 = 보호 = 보안 = 콘텍600

  관련된 데이터(필드) 기능(메소드)를 하나의 묶음으로 처리

 

상속 = 코드 재활용 = 이미 작성된 클래스(부모) 이어받아서 새롭게 만드는(자식) 것

                          자식 클래스는 부모 클래스의 모든 속성(필드) 동작(메소드)를 사용할 있습니다.

                          필요한 기능은 자식 클래스에서 추가해 사용합니다.

 

추상화 = 불필요한 것을 제외하고 필요한 것을 유지

실제로 객체를 인스턴스화 할때 필요한 내용을 남기고 나머지는 제외하는

 

다형성 = 객체의 동작이 변경되는 것

파라미터나 상황에 따라 동작이 변경됩니다.

======================================================================================================

클래스 = 인스턴스를 발생시킬있는 설계도 = 붕어빵

인스턴스 = 결과물 = 붕어빵

 

자동차 설계도 -> 자동차

 

 

클래스 구성요소

1. 필드 = 변수 -> 클래스 변수 / 인스턴스 변수

2. 생성자 __나중에...

3. 메소드 = 기능(함수)


[ 객체생성 및 메소드활용 ]

 

package oop;

class Notebook{
	String game;
	boolean power;
	int memory = 2048;
	
	void rungame() {
		if(power) {
			System.out.println(game + "을 구동합니다.");
		}
	}
	
	void power() {
		if(power) {
			System.out.println("종료합니다.");
		} else {
			System.out.println("켭니다.");
		}
		power = !power;
	}
	
	
	void addMemory(int add) {
		memory += add;
		System.out.println("업그레이드 되었습니다. " + memory);
		
	}	
}


public class OOP01 {
	public static void main(String[] args) {

		Notebook gram = new Notebook();
		
		System.out.println(gram.memory);	// 2048
		// 인스턴스화 했으니 Notebook 클래스의 속성 불러올 수 있음
		
		// 메소드 불러와서 실행시킬 수도 있음
		gram.game = "LOL";
		gram.power();
		gram.rungame();
		gram.power();			// 실행순서주의**
		gram.addMemory(1024);	// 파라미터 필요! 위 addMemory 메소드에서 파라미터 넣어줬기 때문
		
	}

}

( boolean 이용해서 조건문출력 )

package oop;

class Notebook{

	String game;
	boolean power;  // boolean의 초기값은 false ***

	void power() {
		if(power) {
			System.out.println(power);			
			System.out.println("종료합니다.");	
		} else {
			System.out.println(power);			
			System.out.println("켭니다.");		
		}
		power = !power;
	}
	
	void runGame() {
		if(power) {
			System.out.println(game + "을 구동합니다.");
		}
	}
}


public class OOP01 {
	public static void main(String[] args) {

		Notebook gram = new Notebook();
		
		gram.game = "LOL";
		
		gram.power();		// boolean power = false
		gram.runGame();
		gram.power();		// boolean power = true
		
	}

}

*** boolean의 초기값은 false 


false
켭니다.
LOL을 구동합니다.
true
종료합니다.

[ 하나의 클래스 --> 여러개의 객체 생성 ]

 

하나의 클래스로부터 여러개의 인스턴스(객체)를 만들어낼 수 있음
붕어빵틀        --> 여러개의 붕어빵

자동자설계도 --> 여러개의 자동차

클래스            --> 여러개의 인스턴스 (객체보다는 인스턴스로 기억하기)

Notebook      --> gram & sam    ** (gram과 sam은 각각 다른 객체 ,  메모리공간도 다름)

package oop;

class Notebook{

	String game;
	boolean power; // false
	int memory = 2048;


	void power() {
		if(power) {
			System.out.println("종료합니다.");
		} else {
			System.out.println("켭니다.");
		}
		power = !power;
	}
	
	void runGame() {
		if(power) {
			System.out.println(game + "을 구동합니다.");
		}

	}

	void addMemory(int add) {  //1024
		memory += add;
		System.out.println("업그레이드 되었습니다. " + memory);
	}


}


public class OOP01 {
	public static void main(String[] args) {

// 		객체1 (gram)
//		Notebook gram = new Notebook();
//		
//		gram.game = "LOL";
//		gram.power();
//		gram.runGame();
//		gram.power();
		
        
//		객체2	(sam)
		Notebook sam = new Notebook();
		System.out.println(sam.memory);
		
		sam.game = "D4";
		sam.power();
		sam.runGame();
		sam.power();

	}

}