본문 바로가기
Java/Java_basic

Step9. 객체지향 프로그램

by Mr.DonyStark 2023. 9. 22.

□객체 : 세상에 존재하는 모든것을 뜻하며 프로그래밍에서 속성과 기능을 가지는 프로그램 단위. 특정한 목적에 의하여 만들어짐. 사용중인 객체는 절대 건들지 않음.

 ex 1)현실세계 ▶ 사람 → 속성: 키, 몸무게 등 / 기능 : 의사, 개발자 등
 ex 2)현실세계 ▶ 자동차 → 속성: 바퀴, 엔진 등 / 기능 : 전진, 후진 등
 ex 3)객체(프로그램) ▶ 날씨 프로그램 → 속성: 온도, 미세먼지 등 / 기능 : 날씨예보
 ex 4)객체(프로그램) ▶ 사칙연산 프로그램 → 속성: +, -, *, / 등 / 기능 : 연산기능

 

□클래스 : 객체를 생성하기 위한 틀로 모든 객체는 클래스로부터 생성됨

ex)그렌저(속성: 색상, 바퀴 등 / 기능: 배기량 등) - 복제 - 그렌저1[속성: 색상(블랙), 바퀴(일반) 등 / 기능: 배기량(2000cc) 등], 그렌저2[속성: 색상(흰색), 바퀴(광폭) 등 / 기능: 배기량(2500cc) 등],그렌저3[속성: 색상(회색), 바퀴(일반) 등 / 기능: 배기량(3000cc) 등]
-클래스 = 속성(멤버변수) + 기능(메서드)
 ex) 자전거 클래스 = 속성(멤버변수 : 안장, 핸들, 바구니, 기어, 페달, 바퀴) + 기능(메서드 : 기어변속, 가속, 브레이크)

 

○예제1) 클래스 파일 생성

package person_test;

public class Bicycle {

	public String color;                   // ← ***클래스 속성(멤버변수)
	public int price;                        // ← ***클래스 속성(멤버변수)
	public String gear;                   // ← ***클래스 속성(멤버변수)
	
	public Bicycle() {
		System.out.println("Bicycle Constructor"); //← ***생성자(클래스이름과 동일) 클래스 호출시 제일먼저 호출되며 반환형이 없음
	}
	
	public void info() {                //← ***클래스 메서드(일반적으로 소문자로 작명)
		System.out.println(" color : " + color);
		System.out.println(" info : " +price);
	}
	
	public void run() {                //← ***클래스 메서드(일반적으로 소문자로 작명)
		System.out.println("run");
	}
	
	public void stop() {                //← ***클래스 메서드(일반적으로 소문자로 작명)
		System.out.println("stop");
	}
}

 

○예제1-1) 생성된 클래스로부터 객체 생성

package person_test;

public class MainClass {
	public static void main(String[] args) {
		
		Bicycle Bicycle_num_1 = new Bicycle();   // 클래스명 + 객체명 = new 클래그명();  & 클래스로부터 객체 생성을 위해 new 사용 & 해당 코드가 실행되면 클래스 파일에서의 생성자 코드 실행됨
		
		Bicycle_num_1.color = "red";                     // 클래스 속성을 호출하여 객체 속성 값 지정
		Bicycle_num_1.gear = "auto";                    // 클래스 속성을 호출하여 객체 속성 값 지정
		Bicycle_num_1.price = 100000;                 // 클래스 속성을 호출하여 객체 속성 값 지정

		System.out.println("자전거1 정보");
		Bicycle_num_1.info();                               // 클래스 메서드 호출 = 객체명.클래스지정메서드명();
		
		System.out.println("자전거1 기능");
		Bicycle_num_1.run();                               // 클래스 메서드 호출 = 객체명.클래스지정메서드명();
		Bicycle_num_1.stop();                             // 클래스 메서드 호출 = 객체명.클래스지정메서드명();
		
		
		Bicycle Bicycle_num_2 = new Bicycle();   // 클래스명 + 객체명 = new 클래그명();  & 클래스로부터 객체 생성을 위해 new 사용 & 해당 코드가 실행되면 클래스 파일에서의 생성자 코드 실행됨
		
		Bicycle_num_2.color = "black";                // 클래스 속성을 호출하여 객체 속성 값 지정
		Bicycle_num_2.gear = "normal";             // 클래스 속성을 호출하여 객체 속성 값 지정
		Bicycle_num_2.price = 50000;               // 클래스 속성을 호출하여 객체 속성 값 지정
		
		System.out.println("자전거2 정보");
		Bicycle_num_2.info();								// 클래스 메서드 호출 = 객체명.클래스지정메서드명();
		
		System.out.println("자전거2 기능");
		Bicycle_num_2.run();                             // 클래스 메서드 호출 = 객체명.클래스지정메서드명();
		Bicycle_num_2.stop();                           // 클래스 메서드 호출 = 객체명.클래스지정메서드명();          
	}
}

 

○예제2) 클래스 파일 생성

package person_test;

public class Test_Class {             // ← ***클래스 이름 : 일반적으로 첫글자는 대문자로 지정

	public String color;                   // ← ***클래스 속성(멤버변수)
	public int price;                       // ← ***클래스 속성(멤버변수)
	
	public Test_Class(String c, int p) {               //← ***생성자에 미리 객체속성으로 받을 값을 지정
		this.color = c;               //← 객체속성으로 받을 속성명 앞에 this. 을 붙이고 받을 값을 지정
		this.price = p;              //← 객체속성으로 받을 속성명 앞에 this. 을 붙이고 받을 값을 지정
	}
	
	public void run() {                  //← ***클래스 메서드(일반적으로 소문자로 작명) & void를 기재하여 해당 메서드를 시행하고나서 무엇인가를 반환할것이 없다라면 기재
		System.out.println("---run---");
	}
	
	public void stop() {                  //← ***클래스 메서드(일반적으로 소문자로 작명) & void를 기재하여 해당 메서드를 시행하고나서 무엇인가를 반환할것이 없다라면 기재
		System.out.println("---stop---");
	}
	
	public void info() {                //← ***클래스 메서드(일반적으로 소문자로 작명)
		System.out.println(" color : " + color);
		System.out.println(" info : " +price);
	}
    
}

○예제2-1) 생성된 클래스로부터 객체 생성

package person_test;

public class MainClass2 {
	public static void main(String[] args) {
		
		Test_Class test_Class_1 = new Test_Class("Yellow", 5000); //생성자 호출하는 곳에서 속성으로 받을 값을 기재
		//생성자 호출시 속성을 지정했지만 추가로 지정한 속성에 대한 값을 별도 추가로 지정하면 해당 속성 값이 추가된 값으로 바뀜
		test_Class_1.info();
		test_Class_1.run();
		test_Class_1.stop();
		
	}
}

'Java > Java_basic' 카테고리의 다른 글

Step11. 객체와 메모리  (0) 2023.09.22
Step10. 객체 - 메서드와 접근자  (0) 2023.09.22
Step8. 반복문  (0) 2023.09.21
Step7. 조건문  (0) 2023.09.21
Step6. 배열  (0) 2023.09.20