JAVA

OOP 객체 지향 프로그램

zkzk7290 2024. 9. 20. 20:47
반응형
oop 객체 지향 프로그램 객체란? 데이터와 해당 데이터를 처리하는 방법을 포함하는 프로그래밍의 기본 단위

EX)

속성(커피 종류, 가격, 현재 재고, 물의 온도) + 기능: 커피 제조, 재고 관리 , 가격 설정

 

학교 관리 시스템

학생 객체 
속성: 학생이름 , 학번, 수강 과목, 등의 데이터 + 기능: 성적 조회, 수강 신청 등의 메서드 
교수 객체

속성 : 교수이름 , 연구 분야, 담당과목 + 기능 : 강의 계획서 업로드 , 성적입력

 

1. 클래스(class)정의 : 객체의 상태(속성)와 행동(메서드)을 정의
실제 데이터나 코드 X 데이터와 기능 구조를 정의하는 하나의 개념적인 틀 

 2. 객체(Object)정의 - 클래스에 정의된 속성과 메서드를 가지고 있는 '실체'               
클래스 기반으로 생성 클래스의 인스턴스라고 불림
각 객체는 독립적인 상태와 행동을 가짐 

3.클래스 의 행동 (메서드) : 클래스 내부에서 정위 된 함 객체 행동을 표현
클래스의 해당 값을 변경 가능, 값을 반환

 

package chapter04;
// 클래스 구조 : 필드 ,메서드 ,사용자
class car{//클래스
	String model;
	int year;
	car(String modelName, int year){// 매개변수  
		model =modelName;
		this.year = year;
	}
	void displayInfo() {//void 메서드명  = 리턴값이 없는 메서드 
		System.out.println("model"+ model+ "year : "+"year");
	}
}	


public class Object03 {
	public static void main(String[] args) {
		// 객체 생성 (객체 생성 - 객체 인스턴스화)
		//new 연산자를 사용 
		//클래스 생성자를 호출 - 객체의 초기 상태를 설정
		car mycar = new car("제네시스",2024);
		// 객체 사용 
		//1. 필드 접근 (. 연산자 사용)
		System.out.println(mycar.model);
		System.out.println(mycar.year);
	}
}
this키워드 : 클래스의 필드와 생성자로 받아오는 데이터의 이름이 같을 경우 구분을 위해 사용
void - 해당 메서드 반환하는 결과X  -> 반환이 존재하지 않을경우 메서드명 앞에 반드시 필요

 

package chapter04;
class Book{
	String title;
	int price;
예제 1)	 

Book(String title, int price){
	this.title = title;
	this.price = price;
}
void BookInfo() {// 클래스 기능 
	System.out.println("책 제목: "+title+","+ "책의 가격"+ price);
		}
}

// 생성자 생략 가능 사용시- 호출될 메서드 
// 생략시  - 속성에 기본값이 할당 
public class Object04 {
	public static void main(String[] args) {
		Book book = new Book("만화책",12000);// 객체를 인스턴스화 
		Book book1 = new Book("소설책",5000);
		book1.BookInfo();// 메서드 호출 
		
		book.price= 1000;// 속성값 변경 가능 
		book.BookInfo();
	}
}

 


 

필드 VS 지역 변수VS 인스턴스 변수 
필드(속성): 객체의 지속적인 상태를 저장하는 클래스 내부의 변수

지역변수() : 메서드가 실행되는 동안에만 존재하는 일시적인 변수

인스턴스 변수 : 클래스의 각 객체(인스턴스)에 변수
>> 클래스 내부에서 선언, 객체가 생성될 때 메모리에 할당

 

주석도  꼼꼼이 읽어 봐주세요 

package chapter04;
//클래스 정적변수 -static키워드 사용하여 선언되는 변수 
//클래스의 모든 인스턴스에서 공유되는 데이터 
//>> 프로그램이 시작될때 생성 프로그램이 종료될때 소멸(메모리에 할당)
class CarClass{
	//인스턴스 변수 :각 객체(인스턴스) 마다 다른 값을 가짐 
	String color;
	int speed;
	String brand;
	// 정적 변수: 해당 클래스로 생성되는 모든 객체가 동일한 값을 가짐 
	// 데이터 타입 앞에 static키워드 사용
	
	// 변수 선언과 동시에 공유될 값을 초기화 
	static int tireNumber =4;
	static int doorNumber=4;
	void accelerate(int increment) {
		// increment는지역변수이다 
		// >> 메서드 내부에서만 유효 
		speed += increment;
	}
}

public class Object05 {
	public static void main(String[] args) {
		CarClass car1 =new CarClass();
		// 객체의 인스턴스 변수 
		car1.brand = "kia";
		car1.color = "black";
		
		// 객체의 클레스 변수 -클래스 .변수
		//>>클래스변수는 클래스명으로 접근을 권장 
		System.out.println(CarClass.tireNumber);//4

		System.out.println(car1.brand);//Kia
	}
}
반응형