프로그래밍/자바(java) 융합개발자 2차

[자바 4일차] 23일차 - 클래스

aSpring 2021. 1. 15. 14:06
728x90
728x90

2021/01/14 - [분류 전체보기] - [자바 기초] 22일차 2 - 클래스, 객체

 

com.day04

Car.java

Car 클래스 만들기

 

이렇게 오류가 난다. 오류 해결하기!

package com.day04;

public class Car {
		
	String name; //속성 정의
	String carColor;
	int speed;
	
	public void speedUp(int speed) { //함수
		this.speed += speed;
	}
	
	public void speedDown(int speed) { //함수
		this.speed -= speed;
	}
	
	
	public void getSpeed() {
		System.out.println("속도 : " + speed);
	}
	
	public static void main(String[] args) {
		
		Car c1 = new Car();
		c1.name="소나타"; //속성 정의해주어야 함
		c1.carColor="흰색";
		c1.speedUp(30); //속도를 올린다.
		c1.speedDown(10); //속도를 내린다.
		c1.getSpeed(); //속도를 알려줌 ==> 속도 : 20
	}
}

속도 : 20

 

c2 만들어보기

오류나지 않도록 하기

Car는 생성자 -> 인자 2개 짜리가 없어 오류가 나는 것

public Car(String name, String Color) {

}

해주니까 갑자기

요기서 오류가 난다? 디폴트 생성자라서 Car c1 = new Car(); 는 생략 가능했는데

다른 유형이 등장했으므로 public Car () { } 해주어야 함

package com.day04;

public class Car {
		
	String name; //속성 정의
	String carColor;
	int speed;
	
	public Car() {
		
	}
	
	public Car(String name, String Color) {
		
	}
	
	public void speedUp(int speed) { //함수
		this.speed += speed;
	}
	
	public void speedDown(int speed) { //함수
		this.speed -= speed;
	}
	
	
	public void getSpeed() {
		System.out.println("속도 : " + speed);
	}
	
	
	public static void main(String[] args) {
		
		Car c1 = new Car();
		c1.name="소나타"; //속성 정의해주어야 함
		c1.carColor="흰색";
		c1.speedUp(30); //속도를 올린다.
		c1.speedDown(10); //속도를 내린다.
		c1.getSpeed(); //속도를 알려줌 ==> 속도 : 20
		
		Car c2 = new Car("내 차", "black"); //Car는 생성자 -> 인자 2개 짜리가 없어 오류가 나는 것
		c1.speedUp(50);
		c1.getSpeed();
	}
}

public void Car () {

} -> 이렇게 쓰면 안됨. 이렇게 되면 생성자가 아니라 메서드가 되어버림

 

package com.day04;

public class Car {
		
	String name; //속성 정의
	String carColor;
	int speed;
	
	public Car() { //생성자 클래스 이름, void를 쓰면 안 됨 -> 역할 : 멤버변수 초기화 
		
	}
	
	public Car(String name, String Color) {
		
	}
	
	public void speedUp(int speed) { //함수
		this.speed += speed;
	}
	
	public void speedDown(int speed) { //함수
		this.speed -= speed;
	}
	
	
	public void getSpeed() {
		System.out.println("속도 : " + speed);
	}
	
	
	public static void main(String[] args) {
		
		Car c1 = new Car();
		c1.name="소나타"; //속성 정의해주어야 함
		c1.carColor="흰색";
		c1.speedUp(30); //속도를 올린다.
		c1.speedDown(10); //속도를 내린다.
		c1.getSpeed(); //속도를 알려줌 ==> 속도 : 20
		
		Car c2 = new Car("내 차", "black"); //Car는 생성자 -> 인자 2개 짜리가 없어 오류가 나는 것
		c2.speedUp(50);
		c2.getSpeed();
	}
}

속도 : 20
속도 : 50

 

Triangle 넓이를 구해보자. 하나의 파일에 클래스 여러개 두기

TriangleMain.java

오류나지 않게 만들어주기

 

public은 1번만 써주어야 하고 클래스가 여러개 일 때 파일명은 반드시 main을 가진 클래스 명으로 해주어야 함

package com.day04;

	class Triangle {
		// 삼각형 넓이 = 밑변 * 높이 / 2
		int bottom;
		int height;

		public Triangle(int bottom, int height) { // 생성자 생성
			this.bottom = bottom;
			this.height = height;
		}

		public double getArea() { // 돌려주는 값은 소수점까지 생각해서 double형
			// System.out.println(bottom*height/2);
			return bottom * height / 2; // return을통해 넓이의 결과값을 돌려줘야함
		}

		public void setBottom(int bottom) {
			this.bottom = bottom;
		}

		public void setHeight(int height) {
			this.height = height;
		}

	}

	public class TriangleMain {

		public static void main(String[] args) {

			Triangle t1 = new Triangle(10, 20); // 밑변, 높이
			System.out.println("삼각형의 넓이 : " + t1.getArea()); // 수행한 결과값을 여기에 출력하라
			t1.setBottom(15); // 삼각형 밑변 길이
			t1.setHeight(22); // 삼각형 높이
			System.out.println("삼각형의 넓이 : " + t1.getArea());

		}
}

삼각형의 넓이 : 100.0
삼각형의 넓이 : 165.0

 

Student.java

package com.day04;

public class Student {

	
	
	public static void main(String[] args) {
		
		Student s1 = new Student("홍길동", 100, 80, 70);

	}

}
package com.day04;

public class Student {
	
	public static void main(String[] args) {
		
		Student s1 = new Student("홍길동", 100, 80, 70);
		Student s2 = new Student("이순신", 50, 60, 70);
		System.out.println("이름\t국어\t수학\t영어\t총점\t평균");
		System.out.println(s1.name);
		System.out.println(s1.kor);
		System.out.println(s1.math);
		System.out.println(s1.eng);
		System.out.println(s1.getTotal());
		System.out.println(s1.getAverage());
	}

}

 

 오류 나지 않도록 만들어 주기

package com.day04;

public class Student {

	String name;
	int kor;
	int math;
	int eng;
	
	public Student(String name, int kor, int math, int eng) {
		this.name = name;
		this.kor = kor;
		this.math = math;
		this.eng = eng;
	}
	
	public int getTotal() {
		return kor+math+eng;
	}
	
	public double getAverage() {
		return (kor+math+eng)/3;
	}
	
	public static void main(String[] args) {
		
		Student s1 = new Student("홍길동", 100, 80, 70);
		Student s2 = new Student("이순신", 50, 60, 70);
		System.out.println("이름\t국어\t수학\t영어\t총점\t평균");
		System.out.print(s1.name+"\t");
		System.out.print(s1.kor+"\t");
		System.out.print(s1.math+"\t");
		System.out.print(s1.eng+"\t");
		System.out.print(s1.getTotal()+"\t");
		System.out.print(s1.getAverage()+"\t");
	}
}

이름 국어 수학 영어 총점 평균
홍길동 100 80 70 250 83.0

 

주석 설명 추가

package com.day04;

public class Student {

	String name; //아래 main 속 멤버변수 정의
	int kor, math, eng; //아래 main 속 멤버변수 정의
	
	public Student(String name, int kor, int math, int eng) { //생성자 만들고 인자 넣어줌
		this.name = name; //이것들을 세팅해주지 않으면 다 기본값 null, 0 나옴
		this.kor = kor;  //내가 정한 점수를 this. 에 입력해주는 과정
		this.math = math; //여기에 이런 식으로 적어주어야 함
		this.eng = eng;
	}
	
	public int getTotal() { //만들어줌2 -> 합계 구하는 내용 -> public int
		return kor+math+eng; //결과값 돌려줌  -> int형
	}
	
	public double getAverage() { //만들어줌3
		return (kor+math+eng)/3; //결과값 돌려줌 -> 평균이니까 double형
		//return getTotal()/3; 이렇게 적어주어도 된다.
	}
	
	public static void main(String[] args) {
		
		Student s1 = new Student("홍길동", 100, 80, 70); //생성자 만들어주기
		Student s2 = new Student("이순신", 50, 60, 70);
		System.out.println("이름\t국어\t수학\t영어\t총점\t평균");
		System.out.print(s1.name+"\t");
		System.out.print(s1.kor+"\t");
		System.out.print(s1.math+"\t");
		System.out.print(s1.eng+"\t");
		System.out.print(s1.getTotal()+"\t"); //만들어주기2 -> 결과값 받아야 함
		System.out.print(s1.getAverage()+"\t");  //만들어주기3 -> 결과값 받아야 함
	}
}

이름  국어  수학 영어 총점 평균
홍길동 100  80   70   250  83.0

 

프로그램은 정해진 것이 없고 우리가 가장 최적화 된 걸 만드는 것이다.

 

s2 것도 출력해보자

package com.day04;

public class Student {

	String name; //아래 main 속 멤버변수 정의
	int kor, math, eng; //아래 main 속 멤버변수 정의
	
	public Student(String name, int kor, int math, int eng) { //생성자 만들고 인자 넣어줌
		this.name = name; //이것들을 세팅해주지 않으면 다 기본값 null, 0 나옴
		this.kor = kor;  //내가 정한 점수를 this. 에 입력해주는 과정
		this.math = math; //여기에 이런 식으로 적어주어야 함
		this.eng = eng;
	}
	
	public int getTotal() { //만들어줌2 -> 합계 구하는 내용 -> public int
		return kor+math+eng; //결과값 돌려줌  -> int형
	}
	
	public double getAverage() { //만들어줌3
		return (kor+math+eng)/3; //결과값 돌려줌 -> 평균이니까 double형
		//return getTotal()/3; 이렇게 적어주어도 된다.
	}
	
	public static void main(String[] args) {
		
		Student s1 = new Student("홍길동", 100, 80, 70); //생성자 만들어주기
		Student s2 = new Student("이순신", 50, 60, 70);
		System.out.println("이름\t국어\t수학\t영어\t총점\t평균");
		System.out.print(s1.name+"\t");
		System.out.print(s1.kor+"\t");
		System.out.print(s1.math+"\t");
		System.out.print(s1.eng+"\t");
		System.out.print(s1.getTotal()+"\t"); //만들어주기2 -> 결과값 받아야 함
		System.out.print(s1.getAverage()+"\t");  //만들어주기3 -> 결과값 받아야 함
		System.out.println();
		
		System.out.print(s2.name+"\t");
		System.out.print(s2.kor+"\t");
		System.out.print(s2.math+"\t");
		System.out.print(s2.eng+"\t");
		System.out.print(s2.getTotal()+"\t");
		System.out.print(s2.getAverage()+"\t");
	}
}

이름  국어  수학  영어  총점  평균
홍길동 100  80     70    250   83.0
이순신 50   60      70    180   60.0

 

조금 더 간단하게 써주기 위해 info() 에서 불러줄 내용들 적어주기

package com.day04;

public class Student {

	String name; //아래 main 속 멤버변수 정의
	int kor, math, eng; //아래 main 속 멤버변수 정의
	
	public Student(String name, int kor, int math, int eng) { //생성자 만들고 인자 넣어줌
		this.name = name; //이것들을 세팅해주지 않으면 다 기본값 null, 0 나옴
		this.kor = kor;  //내가 정한 점수를 this. 에 입력해주는 과정
		this.math = math; //여기에 이런 식으로 적어주어야 함
		this.eng = eng;
	}
	
	public int getTotal() { //만들어줌2 -> 합계 구하는 내용 -> public int
		return kor+math+eng; //결과값 돌려줌  -> int형
	}
	
	public double getAverage() { //만들어줌3
		return (kor+math+eng)/3; //결과값 돌려줌 -> 평균이니까 double형
		//return getTotal()/3; 이렇게 적어주어도 된다.
	}
	
	public void info() {
		System.out.print(name+"\t");
		System.out.print(kor+"\t");
		System.out.print(math+"\t");
		System.out.print(eng+"\t");
		System.out.print(getTotal()+"\t");
		System.out.print(getAverage()+"\t");
		System.out.println();
	}
	
	public static void main(String[] args) { //실행부 main
		
		Student s1 = new Student("홍길동", 100, 80, 70); //생성자 만들어주기
		Student s2 = new Student("이순신", 50, 60, 70);
		System.out.println("이름\t국어\t수학\t영어\t총점\t평균");
		
		s1.info();
		s2.info();
	}
}

 같은 결과 도출됨

이름  국어  수학  영어  총점  평균 
홍길동 100  80     70    250   83.0 
이순신 50   60      70    180   60.0

 

학생 1명 추가 -> 아직 시험을 안쳐서 이름만 있음

package com.day04;

public class Student {

	String name; //아래 main 속 멤버변수 정의
	int kor, math, eng; //아래 main 속 멤버변수 정의
	
	public Student(String name, int kor, int math, int eng) { //생성자 만들고 인자 넣어줌
		this.name = name; //이것들을 세팅해주지 않으면 다 기본값 null, 0 나옴
		this.kor = kor;  //내가 정한 점수를 this. 에 입력해주는 과정
		this.math = math; //여기에 이런 식으로 적어주어야 함
		this.eng = eng;
	}
	
	public int getTotal() { //만들어줌2 -> 합계 구하는 내용 -> public int
		return kor+math+eng; //결과값 돌려줌  -> int형
	}
	
	public double getAverage() { //만들어줌3
		return (kor+math+eng)/3; //결과값 돌려줌 -> 평균이니까 double형
		//return getTotal()/3; 이렇게 적어주어도 된다.
	}
	
	public void info() {
		System.out.print(name+"\t");
		System.out.print(kor+"\t");
		System.out.print(math+"\t");
		System.out.print(eng+"\t");
		System.out.print(getTotal()+"\t");
		System.out.print(getAverage()+"\t");
		System.out.println();
	}
	
	public static void main(String[] args) { //실행부 main
		
		Student s1 = new Student("홍길동", 100, 80, 70); //생성자 만들어주기
		Student s2 = new Student("이순신", 50, 60, 70);
		System.out.println("이름\t국어\t수학\t영어\t총점\t평균");
		
		s1.info();
		s2.info();
		
		Student s3 = new Student("강감찬");
		s3.info();
	}
}

오류나지 않게 만들기

public Student(String name) {
		this.name = name;
	}

이름만 있는 Student 만들기

package com.day04;

public class Student {

	String name; //아래 main 속 멤버변수 정의
	int kor, math, eng; //아래 main 속 멤버변수 정의
	
	public Student(String name, int kor, int math, int eng) { //생성자 만들고 인자 넣어줌
		this.name = name; //이것들을 세팅해주지 않으면 다 기본값 null, 0 나옴
		this.kor = kor;  //내가 정한 점수를 this. 에 입력해주는 과정
		this.math = math; //여기에 이런 식으로 적어주어야 함
		this.eng = eng;
	}
	
	public Student(String name) { // s3를 위한 1개짜리 생성자 생성
		this.name = name;
	}
	
	public int getTotal() { //만들어줌2 -> 합계 구하는 내용 -> public int
		return kor+math+eng; //결과값 돌려줌  -> int형
	}
	
	public double getAverage() { //만들어줌3
		return (kor+math+eng)/3; //결과값 돌려줌 -> 평균이니까 double형
		//return getTotal()/3; 이렇게 적어주어도 된다.
	}
	
	public void info() {
		System.out.print(name+"\t");
		System.out.print(kor+"\t");
		System.out.print(math+"\t");
		System.out.print(eng+"\t");
		System.out.print(getTotal()+"\t");
		System.out.print(getAverage()+"\t");
		System.out.println();
	}
	
	public static void main(String[] args) { //실행부 main
		
		Student s1 = new Student("홍길동", 100, 80, 70); //생성자 만들어주기
		Student s2 = new Student("이순신", 50, 60, 70);
		System.out.println("이름\t국어\t수학\t영어\t총점\t평균");
		
		s1.info();
		s2.info();
		
		Student s3 = new Student("강감찬"); //오류나지 않게 만들기 -> 생성자 1개짜리 생성
		s3.info();
	}
}

이름 국어 수학 영어 총점 평균
홍길동 100 80 70 250 83.0
이순신 50  60 70 180 60.0
강감찬 0   0    0   0    0.0

 

이름 제외하고 나머지는 다 기본값으로 나옴

 

TV.java

package com.day04;

public class TV {

	public static void main(String[] args) {
		TV tv1 = new TV("LG", 2020, 60);
		tv1.show(); // LG에서 만든 2020년 형 60인치
		TV tv2 = new TV("삼성", 2021, 75);
		tv2.show();
				
	}

}

오류 나지 않도록 만들기

package com.day04;

public class TV {

	String Cor;
	int Year, Inch; //전역 변수 필요
	
	public TV(String Cor, int Year, int Inch) { //생성자 TV(인자, 인자, 인자)
		this.Cor = Cor; //내가 ()에 입력해 준 걸 내 전역변수에 담음
		this.Year = Year;
		this.Inch = Inch;
	}
	
	public void show() {
		System.out.println(Cor + "에서 만든 " + Year + "년 형 " + Inch + "인치");
	}
	
	public static void main(String[] args) {
		TV tv1 = new TV("LG", 2020, 60); //생성자 TV 만들어야 함
		tv1.show(); // LG에서 만든 2020년 형 60인치
		TV tv2 = new TV("삼성", 2021, 75);
		tv2.show();
	}
}

LG에서 만든 2020년 형 60인치
삼성에서 만든 2021년 형 75인치

 

Circle.java

package com.day04;

public class Circle {
	
	public static void main(String[] args) {
		
		Circle c1 = new Circle("피자", 10); //피자, 반지름
		c1.getArea();
		
		Circle c2 = new Circle(); //도넛, 반지름
		c2.name = "도넛";
		c2.r = 2;
		c2.getArea(); //도넛 면적
	}

}

오류나지 않도록 만들기

package com.day04;

public class Circle {
	
	String name;
	int r;

	public Circle(String name, int r) { // 생성자(인수)
		this.name = name;
		this.r = r;
	}
	
	public Circle() { // 원래는 생략 가능 but 인수가 들어간 생성자가 있기 때문에 적어주어야 함
		
	}
	
	public void getArea() { //함수 생성
		System.out.println(name + "의 면적 : " + r * r * 3.14);
	}
	
	public static void main(String[] args) {
		
		Circle c1 = new Circle("피자", 10); //피자, 반지름
		c1.getArea();
		
		Circle c2 = new Circle(); //도넛, 반지름 -> 디폴트 생성자
		c2.name = "도넛";
		c2.r = 2;
		c2.getArea(); //도넛 면적
	}

}

 

위처럼 해도 되지만 3.14 같은 경우 고정된 값, 수정안되도록 final로 정의

package com.day04;

public class Circle {
	
	String name;
	int r;
	final double PI = 3.14; //고정된 값, 수정안되도록 final로 정의

	public Circle(String name, int r) { // 생성자(인수)
		this.name = name;
		this.r = r;
	}
	
	public Circle() { // 원래는 생략 가능 but 인수가 들어간 생성자가 있기 때문에 적어주어야 함
		
	}
	
	public void getArea() { //함수 생성
		System.out.println(name + "의 면적 : " + r * r * PI);
	}
	
	public static void main(String[] args) {
		
		Circle c1 = new Circle("피자", 10); //피자, 반지름
		c1.getArea();
		
		Circle c2 = new Circle(); //도넛, 반지름 -> 디폴트 생성자
		c2.name = "도넛";
		c2.r = 2;
		c2.getArea(); //도넛 면적
	}

}

 

ArrayClass

package com.day04;

public class ArrayClass {

	//합계 구하는 메소드 => sum
	
	//최대값 구하는 메소드 => max
	
	//최소값 구하는 메소드 => min
	
	public static void main(String[] args) {
		int[] arr = {10, 5, 3, 36, 45, 9};

	}

}
package com.day04;

public class ArrayClass {


	
	//합계 구하는 메소드 => sum
	public void sum() {
		
	}
	
	//최대값 구하는 메소드 => max
	public void max() {
		
	}
	
	//최소값 구하는 메소드 => min
	public void min() {
		
	}
	
	
	public static void main(String[] args) {
		int[] arr = {10, 5, 3, 36, 45, 9}; //sum에서 arr을 알아야 하는데 main 속에서만 arr을 아는 상태
		ArrayClass ac = new ArrayClass();
		ac.sum();
		ac.max();
		ac.min();
	}

}

package com.day04;

public class ArrayClass {


	
	//합계 구하는 메소드 => sum
	public void sum() {
		
	}
	
	//최대값 구하는 메소드 => max
	public void max() {
		
	}
	
	//최소값 구하는 메소드 => min
	public void min() {
		
	}
	
	
	public static void main(String[] args) {
		int[] arr = {10, 5, 3, 36, 45, 9}; //sum에서 arr을 알아야 하는데 main 속에서만 arr을 아는 상태
		ArrayClass ac = new ArrayClass();
		ac.sum(arr); //arr을 알려준다
		ac.max(arr);
		ac.min(arr);
	}

}
package com.day04;

public class ArrayClass {

	// 합계 구하는 메소드 => sum
	public void sum(int[] arr) { // arr의 배열을 받아 옴
		int hap = 0;
		for (int i = 0; i < arr.length; i++) {
			hap += arr[i];
		}
		System.out.println("합계 : " + hap);
	}
	// 최대값 구하는 메소드 => max
	public int max(int[] arr) {
		int max = arr[0];
		for (int i = 1; i < arr.length; i++) {
			if (max < arr[i]) {
				max = arr[i];
			}
		}
		return max;
	}
	// 최소값 구하는 메소드 => min
	public int min(int[] arr) {
		int min = arr[0];
		for (int i = 1; i < arr.length; i++) {
			if (min > arr[i]) {
				min = arr[i];
			}
		}
		return min; //함수의 맨 마지막에 return을 적어주어야 함
	}
	public static void main(String[] args) {
		int[] arr = { 10, 5, 3, 36, 45, 9 }; // sum에서 arr을 알아야 하는데 main 속에서만 arr을 아는 상태
		ArrayClass ac = new ArrayClass();
		ac.sum(arr); // arr을 알려준다 -> 그럼 값을 받아와야 함
		System.out.println("최대값 : " + ac.max(arr));
		System.out.println("최소값 : " + ac.min(arr));
	}
}

 

다 지우고 다른 방법으로 처음부터 

ArrayClass2 ac = new ArrayClass2(arr); 로 생성하면?!

package com.day04;

public class ArrayClass2 {
	
	int[] arr;

	public ArrayClass2(int[] arr) {
		this.arr = arr;
	}
	
	// 합계 구하는 메소드 => sum
	public void sum() { // arr의 배열을 받아 옴
		int sum = 0;
		for(int i=0; i<arr.length;i++) {
			sum += arr[i];
		}
		System.out.println("합계 : " + sum);
	}
	
	// 최대값 구하는 메소드 => max
	public int max() {
		int max = arr[0];
		for(int i=1; i<arr.length; i++) {
			if(max < arr[i]) {
				max = arr[i];
			}
		}
		return max;
	}

	// 최소값 구하는 메소드 => min
	public int min() {
		int min = arr[0];
		for(int i=1; i<arr.length; i++) {
			if(min > arr[i]) {
				min = arr[i];
			}
		}
		return min; //함수의 맨 마지막에 return을 적어주어야 함
	}
	
	public static void main(String[] args) {
		int[] arr = { 10, 5, 3, 36, 45, 9 }; // sum에서 arr을 알아야 하는데 main 속에서만 arr을 아는 상태
		ArrayClass2 ac = new ArrayClass2(arr);
		ac.sum(); // arr을 알려준다 -> 그럼 값을 받아와야 함
		System.out.println("최대값 : " + ac.max());
		System.out.println("최소값 : " + ac.min());
	}
}

Drink.java

package com.day04;

public class Drink {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Drink d1 = new Drink("커피", 500, 3);
		d1.getDate(); //커피 500 3 합계 : 1500
		Drink d2 = new Drink("녹차", 3000, 5);
		d2.getDate(); //녹차 3000 5 합계 : 15000
	}
}

작성해보기

package com.day04;

public class Drink {
	
	String name;
	int price, cnt;
	
	public Drink(String name, int price, int cnt) {
		this.name = name;
		this.price = price;
		this.cnt = cnt;
	}

	
	public void getData() {
		System.out.print(name + "\t");
		System.out.print(price + "\t");
		System.out.print(cnt + "\t");
		System.out.print(price*cnt + "\n");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Drink d1 = new Drink("커피", 500, 3);
		d1.getDate(); //커피 500 3 합계 : 1500
		Drink d2 = new Drink("녹차", 3000, 5);
		d2.getDate(); //녹차 3000 5 합계 : 15000
	}
}
package com.day04;

public class Drink {
	
	String name;
	int price, cnt;
	
	public Drink(String name, int price, int cnt) {
		this.name = name;
		this.price = price;
		this.cnt = cnt;
	}
	
	public int getTotal() {
		return price*cnt;
	}
	
	public void getData() {
		System.out.print(name + "\t");
		System.out.print(price + "\t");
		System.out.print(cnt + "\t");
		//System.out.print(price*cnt + "\t");
		System.out.print(getTotal() + "\n");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Drink d1 = new Drink("커피", 500, 3);
		d1.getData(); //커피 500 3 합계 : 1500
		Drink d2 = new Drink("녹차", 3000, 5);
		d2.getData(); //녹차 3000 5 합계 : 15000
	}
}

 

커피 500 3 1500
녹차 3000 5 15000

 

총 판매액도 구해보기

package com.day04;

public class Drink {
	
	String name;
	int price, cnt;
	
	public Drink(String name, int price, int cnt) {
		this.name = name;
		this.price = price;
		this.cnt = cnt;
	}
	
	public int getTotal() {
		return price*cnt;
	}
	
	public void getData() {
		System.out.print(name + "\t");
		System.out.print(price + "\t");
		System.out.print(cnt + "\t");
		//System.out.print(price*cnt + "\t");
		System.out.print(getTotal() + "\n");
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Drink d1 = new Drink("커피", 500, 3);
		d1.getData(); //커피 500 3 합계 : 1500
		Drink d2 = new Drink("녹차", 3000, 5);
		d2.getData(); //녹차 3000 5 합계 : 15000
		System.out.println("총 판매액 : " + (d1.getTotal()+d2.getTotal()));
	}
}

커피 500 3 1500
녹차 3000 5 15000
총 판매액 : 16500

 

Good.java

package com.day04;

public class Good {

	String No, name, cor;
	double discountRate;
	int price;
	
	public Good(String No, String name, String cor, int price) {
		this.No = No;
		this.name = name;
		this.cor = cor;
		this.price = price;
	}
	
	public int getSellingPrice() {
		return price-(int)(price*discountRate);
	}
	
	public void updatediscountRate(double rate) {
		discountRate = rate;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Good g1 = new Good("0001", "레몬", "레몬사", 10000);
		System.out.println(g1.name + " : " + g1.getSellingPrice()); //레몬 : 10000
		Good g2 = new Good("0002", "사과", "애플사", 1500);
		System.out.println(g2.name + " : " + g2.getSellingPrice()); //사과 : 1500
		g2.updatediscountRate(0.2);//20% 할인
		System.out.println(g2.name + " : " + g2.getSellingPrice()); //사과 : 판매금액(할인후)
		System.out.println(g2.name + "할인율 : " + g2.discountRate);	
	}
}

레몬 : 10000
사과 : 1500
사과 : 1200
사과할인율 : 0.2

 

GoodMain.java 만들어서 이 부분만 떼서 가지고오기

public static void main(String[] args) {
		// TODO Auto-generated method stub
		Good g1 = new Good("0001", "레몬", "레몬사", 10000);
		System.out.println(g1.name + " : " + g1.getSellingPrice()); //레몬 : 10000
		Good g2 = new Good("0002", "사과", "애플사", 1500);
		System.out.println(g2.name + " : " + g2.getSellingPrice()); //사과 : 1500
		g2.updatediscountRate(0.2);//20% 할인
		System.out.println(g2.name + " : " + g2.getSellingPrice()); //사과 : 판매금액(할인후)
		System.out.println(g2.name + "할인율 : " + g2.discountRate);	
	}

레몬 : 10000
사과 : 1500
사과 : 1200
사과할인율 : 0.2

 

요것만 실행해도 답은 그대로 나온다.

 

접근제한자

public -> 누구나 접근 해라.

 

캡슐화 -> 하나의 클래스로 만들어 묶어서 : 정보은닉(다른 데서 보지 못하도록)

- 생략 -> default : 같은 패키지에서만 접근 가능 -> 우리가 이때까지 한 것 -> 캡슐화, 정보은닉에 맞지 않게 만들었다.

- private : 자기 자신만 접근

package com.day04;

public class Good {

	String No, name, cor; //앞에 생략 -> default : 같은 패키지에서만 접근 가능
	double discountRate; //앞에 생략 -> default : 같은 패키지에서만 접근 가능
	int price; //앞에 생략 -> default : 같은 패키지에서만 접근 가능
	
	public Good(String No, String name, String cor, int price) {
		this.No = No;   
		this.name = name;
		this.cor = cor;
		this.price = price;
	}
	
	public int getSellingPrice() {
		return price-(int)(price*discountRate);
	}
	
	public void updatediscountRate(double rate) {
		discountRate = rate;
	}
}

private로 바꿔주기

package com.day04;

public class Good {

	private String No, name, cor;
	private double discountRate;
	private int price;
	
	public Good(String No, String name, String cor, int price) {
		this.No = No;
		this.name = name;
		this.cor = cor;
		this.price = price;
	}
	
	public int getSellingPrice() {
		return price-(int)(price*discountRate);
	}
	
	public void updatediscountRate(double rate) {
		discountRate = rate;
	}
}

GoodMain.java 실행불가, 오류남 -> 다른 패키지이기 때문에

-> 접근하기 위해서는 접근 가능한 메서드를 만들어 주어야 한다.

Good.java에서 price변수 앞에 get을 붙인다.

public String getName() {
		return name;
	}

이런식으로 적어줌

Good.java

package com.day04;

public class Good {

	private String No, name, cor;
	private double discountRate;
	private int price;
	
	public Good(String No, String name, String cor, int price) {
		this.No = No;
		this.name = name;
		this.cor = cor;
		this.price = price;
	}
	
	public int getSellingPrice() {
		return price-(int)(price*discountRate);
	}
	
	public void updatediscountRate(double rate) {
		discountRate = rate;
	}
	
	//getter
	public String getName() {
		return name;
	}
	public double getDiscountRate() {
		return discountRate;
	}
}

GoodMain.java

package com.day04;

public class GoodMain {

		public static void main(String[] args) {
			Good g1 = new Good("0001", "레몬", "레몬사", 10000);
			System.out.println(g1.getName() + " : " + g1.getSellingPrice()); //레몬 : 10000
			Good g2 = new Good("0002", "사과", "애플사", 1500);
			System.out.println(g2.getName() + " : " + g2.getSellingPrice()); //사과 : 1500
			g2.updatediscountRate(0.2);//20% 할인
			System.out.println(g2.getName() + " : " + g2.getSellingPrice()); //사과 : 판매금액(할인후)
			System.out.println(g2.getName() + "할인율 : " + g2.getDiscountRate());	
		}
}

레몬 : 10000
사과 : 1500
사과 : 1200
사과할인율 : 0.2

 

결과 동일!

 

BBS.java

package com.day04;

public class BBS {
	//name, date, title, content
	
	public static void main(String[] args) {
		BBS b1 = new BBS("홍길동","2021","제목1","내용1");
		b1.print(); //글쓴이, 날짜, 제목, 내용
		BBS b2 = new BBS("이순신","2020","제목2","내용2");
		b2.print(); //글쓴이, 날짜, 제목, 내용
		BBS b3 = new BBS("강감찬","2021","제목3","내용3");
		b3.print(); //글쓴이, 날짜, 제목, 내용
	}

}

만들어 보기

package com.day04;

public class BBS {
	//name, date, title, content
	
	private String name, date, title, content; //멤버변수 앞에 private -> 지금은 나만 써서 별로 상관 없기는 함
	
	public BBS(String name, String date, String title, String content) {
		this.name = name;
		this.date = date;
		this.title = title;
		this.content = content;
	}
	
	public void print() {
		System.out.println(name +" : "+ date +" : "+ title +" : "+ content);
	}
	
	public static void main(String[] args) {
		BBS b1 = new BBS("홍길동","2021","제목1","내용1");
		b1.print(); //글쓴이, 날짜, 제목, 내용
		BBS b2 = new BBS("이순신","2020","제목2","내용2");
		b2.print(); //글쓴이, 날짜, 제목, 내용
		BBS b3 = new BBS("강감찬","2021","제목3","내용3");
		b3.print(); //글쓴이, 날짜, 제목, 내용
	}

}

홍길동 : 2021 : 제목1 : 내용1
이순신 : 2020 : 제목2 : 내용2
강감찬 : 2021 : 제목3 : 내용3

 

글 앞에 1, 2, 3 이런식으로 번호를 달고싶다.

1 홍길동 : 2021 : 제목1 : 내용1 
2 이순신 : 2020 : 제목2 : 내용2 
3 강감찬 : 2021 : 제목3 : 내용3

 

p.149

우리는 위에서 객체

b1, b2, b3 라는 객체 3개를 만들었다 -> 이 객체들은 주소값만 가진다.

예를들어

b1이 100번지 -> 100번지에 title, content, name, date, print()

b2은 200번지 -> 200번지에 title, content, name, date, print()

스텍 영역                 힙 영역

 

하나의 객체는 memory의 각각 필드값과 메서드가 존재한다.

 

System.out.println(b1);

com.day04.BBS@3ac3fd8b

 

이렇게 번호가 찍힌다.

 

package com.day04;

public class BBS {
	//name, date, title, content
	
	private int no;
	private String name, date, title, content; //멤버변수 앞에 private -> 지금은 나만 써서 별로 상관 없기는 함
	
	public BBS(String name, String date, String title, String content) {
		this.no=no;
		this.name = name;
		this.date = date;
		this.title = title;
		this.content = content;
	}
	
	public void print() {
		System.out.println(no + " : " + name +" : "+ date +" : "+ title +" : "+ content);
	}
	
	public static void main(String[] args) {
		BBS b1 = new BBS("홍길동","2021","제목1","내용1");
		b1.print(); //글쓴이, 날짜, 제목, 내용
		BBS b2 = new BBS("이순신","2020","제목2","내용2");
		b2.print(); //글쓴이, 날짜, 제목, 내용
		BBS b3 = new BBS("강감찬","2021","제목3","내용3");
		b3.print(); //글쓴이, 날짜, 제목, 내용
	}

}

0 : 홍길동 : 2021 : 제목1 : 내용1
0 : 이순신 : 2020 : 제목2 : 내용2
0 : 강감찬 : 2021 : 제목3 : 내용3

아직 no에 아무것도 안부여되어있어서 0 나옴

package com.day04;

public class BBS {
	//name, date, title, content
	
	private static int no;
	private String name, date, title, content; //멤버변수 앞에 private -> 지금은 나만 써서 별로 상관 없기는 함
	
	public BBS(String name, String date, String title, String content) {
		no++;
		this.no=no;
		this.name = name;
		this.date = date;
		this.title = title;
		this.content = content;
	}
	
	public void print() {
		System.out.println(no + " : " + name +" : "+ date +" : "+ title +" : "+ content);
	}
	
	public static void main(String[] args) {
		BBS b1 = new BBS("홍길동","2021","제목1","내용1");
		b1.print(); //글쓴이, 날짜, 제목, 내용
		BBS b2 = new BBS("이순신","2020","제목2","내용2");
		b2.print(); //글쓴이, 날짜, 제목, 내용
		BBS b3 = new BBS("강감찬","2021","제목3","내용3");
		b3.print(); //글쓴이, 날짜, 제목, 내용
	}

}

1 : 홍길동 : 2021 : 제목1 : 내용1
2 : 이순신 : 2020 : 제목2 : 내용2
3 : 강감찬 : 2021 : 제목3 : 내용3

 

static -> 객체 마다 가지는 값이 아니고 공유하는 값, 클래스가 static 영역에 접근한다.

보통 클래스 이름으로 접근 BBS.no++;

package com.day04;

public class BBS {
	//name, date, title, content
	
	private static int no;
	private String name, date, title, content; //멤버변수 앞에 private -> 지금은 나만 써서 별로 상관 없기는 함
	
	public BBS(String name, String date, String title, String content) {
		BBS.no++;
		this.no=no;
		this.name = name;
		this.date = date;
		this.title = title;
		this.content = content;
	}
	
	public void print() {
		System.out.println(no + " : " + name +" : "+ date +" : "+ title +" : "+ content);
	}
	
	public static void main(String[] args) {
		BBS b1 = new BBS("홍길동","2021","제목1","내용1");
		b1.print(); //글쓴이, 날짜, 제목, 내용
		BBS b2 = new BBS("이순신","2020","제목2","내용2");
		b2.print(); //글쓴이, 날짜, 제목, 내용
		BBS b3 = new BBS("강감찬","2021","제목3","내용3");
		b3.print(); //글쓴이, 날짜, 제목, 내용
	}

}

1 : 홍길동 : 2021 : 제목1 : 내용1
2 : 이순신 : 2020 : 제목2 : 내용2
3 : 강감찬 : 2021 : 제목3 : 내용3

 

public static void main(String[] args) {
}

public 누구나 접근 가능

static

void 리턴 값이 없음

 

BBS.java에서 Main 부분을 떼내어서 BBSMain.java에 넣어주기

package com.day04;

public class BBSMain {
	public static void main(String[] args) {
		BBS b1 = new BBS("홍길동","2021","제목1","내용1");
		b1.print(); //글쓴이, 날짜, 제목, 내용
		BBS b2 = new BBS("이순신","2020","제목2","내용2");
		b2.print(); //글쓴이, 날짜, 제목, 내용
		BBS b3 = new BBS("강감찬","2021","제목3","내용3");
		b3.print(); //글쓴이, 날짜, 제목, 내용
	}
}

에러 -> private 때문,

getter를 만들어 함수를 들고올 수 있게 해서 오류 고치기

 

BBS.java에서

package com.day04;

public class BBS {
	//name, date, title, content
	
	private static int no;
	private String name, date, title, content; //멤버변수 앞에 private -> 지금은 나만 써서 별로 상관 없기는 함
	
	public BBS(String name, String date, String title, String content) {
		BBS.no++;
		this.no=no;
		this.name = name;
		this.date = date;
		this.title = title;
		this.content = content;
	}
	
	public void print() {
		System.out.println(no + " : " + name +" : "+ date +" : "+ title +" : "+ content);
	}
	
	public String getName() {
		return name;
	}
	public String getDate() {
		return date;
	}
	public String getTitle() {
		return title;
	}
	public String getContent() {
		return content;
	}

}

getter 만들고

 

BBSMain.java에서 get으로 접근

package com.day04;

public class BBSMain {
	public static void main(String[] args) {
		BBS b1 = new BBS("홍길동","2021","제목1","내용1");
		b1.print(); //글쓴이, 날짜, 제목, 내용
		BBS b2 = new BBS("이순신","2020","제목2","내용2");
		b2.print(); //글쓴이, 날짜, 제목, 내용
		BBS b3 = new BBS("강감찬","2021","제목3","내용3");
		b3.print(); //글쓴이, 날짜, 제목, 내용
		System.out.println(b1.getName());
		System.out.println(b1.getDate());
		System.out.println(b1.getTitle());
		System.out.println(b1.getContent());
	}
}

 

결과

1 : 홍길동 : 2021 : 제목1 : 내용1
2 : 이순신 : 2020 : 제목2 : 내용2
3 : 강감찬 : 2021 : 제목3 : 내용3
홍길동
2021
제목1
내용1

 

 

여기서 b1.date="2019";로 바꾸고 싶다.

에러가 난다.

package com.day04;

public class BBS {
	//name, date, title, content
	
	private static int no;
	private String name, date, title, content; //멤버변수 앞에 private -> 지금은 나만 써서 별로 상관 없기는 함
	
	public BBS(String name, String date, String title, String content) {
		BBS.no++;
		this.no=no;
		this.name = name;
		this.date = date;
		this.title = title;
		this.content = content;
	}
	
	public void print() {
		System.out.println(no + " : " + name +" : "+ date +" : "+ title +" : "+ content);
	}
	//getter
	public String getName() {
		return name;
	}
	public String getDate() {
		return date;
	}
	public String getTitle() {
		return title;
	}
	public String getContent() {
		return content;
	}
	//setter
	public void setDate(String date) {
		this.date = date;
	}

}
package com.day04;

public class BBSMain {
	public static void main(String[] args) {
		BBS b1 = new BBS("홍길동","2021","제목1","내용1");
		b1.print(); //글쓴이, 날짜, 제목, 내용
		BBS b2 = new BBS("이순신","2020","제목2","내용2");
		b2.print(); //글쓴이, 날짜, 제목, 내용
		BBS b3 = new BBS("강감찬","2021","제목3","내용3");
		b3.print(); //글쓴이, 날짜, 제목, 내용
		System.out.println(b1.getName());
		System.out.println(b1.getDate());
		System.out.println(b1.getTitle());
		System.out.println(b1.getContent());
		//b1.date="2019";
		b1.setDate("2019");
		b1.print();
	}
}

title을 바꿔보자

package com.day04;

public class BBS {
	//name, date, title, content
	
	private static int no;
	private String name, date, title, content; //멤버변수 앞에 private -> 지금은 나만 써서 별로 상관 없기는 함
	
	public BBS(String name, String date, String title, String content) {
		BBS.no++;
		this.no=no;
		this.name = name;
		this.date = date;
		this.title = title;
		this.content = content;
	}
	
	public void print() {
		System.out.println(no + " : " + name +" : "+ date +" : "+ title +" : "+ content);
	}
	
	public String getName() {
		return name;
	}
	public String getDate() {
		return date;
	}
	public String getTitle() {
		return title;
	}
	public String getContent() {
		return content;
	}
	//setter
	public void setDate(String date) {
		this.date = date;
	}
	public void setTitle(String title) {
		this.title = title;
	}
}
package com.day04;

public class BBSMain {
	public static void main(String[] args) {
		BBS b1 = new BBS("홍길동","2021","제목1","내용1");
		b1.print(); //글쓴이, 날짜, 제목, 내용
		BBS b2 = new BBS("이순신","2020","제목2","내용2");
		b2.print(); //글쓴이, 날짜, 제목, 내용
		BBS b3 = new BBS("강감찬","2021","제목3","내용3");
		b3.print(); //글쓴이, 날짜, 제목, 내용
		System.out.println(b1.getName());
		System.out.println(b1.getDate());
		System.out.println(b1.getTitle());
		System.out.println(b1.getContent());
		//b1.date="2019";
		b1.setDate("2019");
		b1.print();
		b1.setTitle("제목6");
		b1.print();
	}
}

1 : 홍길동 : 2021 : 제목1 : 내용1
2 : 이순신 : 2020 : 제목2 : 내용2
3 : 강감찬 : 2021 : 제목3 : 내용3
홍길동
2021
제목1
내용1
3 : 홍길동 : 2019 : 제목1 : 내용1
3 : 홍길동 : 2019 : 제목6 : 내용1

 

private static int no;
no++; 은 동시에 가지는 값이다 -> 앞에 클래스명 안적어줘도 되지만 보통 BBS.no++; 이렇게 적어 준다.
따라서 객체 마다 가지는 값이 아니므로 초기값 0에서 ++씩 되어서 1 2 3 4 가 되는 것

그러나 static을 지워버리면 객체마다 초기값 0을 가지게 되므로 ++하면 각각 1 1 1 1 을 가지게 됨

 

BBS.java에서 getter, setter 다 지우고 우측 클릭

package com.day04;

public class BBS {
	//name, date, title, content
	
	private static int no;
	private String name, date, title, content; //멤버변수 앞에 private -> 지금은 나만 써서 별로 상관 없기는 함
	
	public BBS(String name, String date, String title, String content) {
		BBS.no++;
		this.no=no;
		this.name = name;
		this.date = date;
		this.title = title;
		this.content = content;
	}
	
	public void print() {
		System.out.println(no + " : " + name +" : "+ date +" : "+ title +" : "+ content);
	}

	public static int getNo() {
		return no;
	}

	public static void setNo(int no) {
		BBS.no = no;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDate() {
		return date;
	}

	public void setDate(String date) {
		this.date = date;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}
	
	
}

자동으로 쫘라락 만들어 줌

 

public BBS(String name, String date, String title, String content) {
		super();
		this.name = name;
		this.date = date;
		this.title = title;
		this.content = content;
	}

요것도 자동으로 만들어줌

 

책 p.175~

객체 간 협력 -> 사람 1명이 학교에 가기 위해 수행하는 여러 과정을 객체 지향 프로그램으로 만들기

- 사람이 버스나 지하철을 타고 가는 걸 프로그래밍 해보기

-> 사람, 버스, 지하철 이렇게 세 객체 생성

Student.java p.175

package com.day04.school;
//175
public class Student {
	private String studentName;
	private int grade;
	private int money;
	
	//생성자
	
	public Student(String studentName, int money) { //2. TakeTrans.java에서 "홍길동", 5000원 받아옴
		this.studentName = studentName;
		this.money = money;
	}
	
	//지하철을 타다 요금 1500원
	public void takeSubway(Subway subway) {
		subway.take(1500);
		this.money -= 1500;
	}
	
	//버스 타다 요금 1000원
	public void takeBus(Bus bus) { //6. s1이 탄 버스 bus100을 받아옴
		bus.take(1000); //7. bus100 take 1000원 입력 -> Bus.java
		this.money -= 1000;
		
	}
	
	//정보 출력
	public void showInfo() {
		System.out.println(studentName + "님의 남은 돈은 " + money + "입니다.");
	}
}

Bus.java p.177

package com.day04.school;

public class Bus {
	
	private int busNumber;
	private int passengerCount;
	private int money;
	
	public Bus(int busNumber) { // 4. TakeTrans.java에서 bus100이라는 객체의 번호 100 받아옴
		this.busNumber = busNumber;
	}
	
	public void take(int money) { //사람을 태운다 8. Student.java bus100.take에서 1000을 받아옴
		this.money += money; // +1000
		this.passengerCount++; // 승객 +1
	}
	public void showInfo() {
		System.out.println("버스 번호 : " + busNumber);
		System.out.println("승객 수 : " + passengerCount);
		System.out.println("수입 : " + money);
	}
}

Subway.java p.177

package com.day04.school;

public class Subway {
	
	private String lineNumber;
	private int passengerCount;
	private int money;
	
	public Subway(String lineNumber) {
		this.lineNumber = lineNumber;
	}
	
	public void take(int money) {
		this.money += money;
		this.passengerCount++;
	}
	
	public void showInfo() {
		System.out.println("지하철 : " + lineNumber);
		System.out.println("승객 수 : " + passengerCount);
		System.out.println("수입 : " + money);
	}

}

TakeTrans.java p.178 -> 실행 위한  main

package com.day04;
//178
public class TakeTrans {

	public static void main(String[] args) {
		

	}

}

필요

TakeTrans.java

홍길동이 버스를 타고, 이순신이 지하철을 탄다.

package com.day04.school;
//178
public class TakeTrans { //실행을 위한 main

	public static void main(String[] args) {
		
		Student s1 = new Student("홍길동", 5000);
		Student s2 = new Student("이순신", 10000);
		
		Bus bus100 = new Bus(100);
		//홍길동이 버스를 타다
		s1.takeBus();

		
		
		Subway subwayGreen = new Subway("2호선");
		//이순신이 지하철을 타다
		s2.takeSubway();
	}

}

//홍길동이 버스를 타다

s1.takeBus();

-> 몇 번 버스를 탈 것인가? 100번

s1.takeBus(bus100);

그러나 Person.java에서는

public void takebus() {

  this.money -= 1000;

}

객체가 없다. -> 인자 값으로 객체가 들어간다.

public void takebus(Bus bus) {

  this.money -= 1000;

}

 

//이순신이 지하철을 타다

s2.takeSubway();

 

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

Student.java

package com.day04.school;
//175
public class Student {
	private String studentName;
	private int grade;
	private int money;
	
	//생성자
	
	public Student(String studentName, int money) { //2. TakeTrans.java에서 "홍길동", 5000원 받아옴
		this.studentName = studentName;
		this.money = money;
	}
	
	//지하철을 타다 요금 1500원
	public void takeSubway(Subway subway) {
		subway.take(1500);
		this.money -= 1500;
	}
	
	//버스 타다 요금 1000원
	public void takeBus(Bus bus) { //6. s1이 탄 버스 bus100을 받아옴
		bus.take(1000); //7. bus100 take 1000원 입력 -> Bus.java
		this.money -= 1000;
		
	}
	
	//정보 출력
	public void showInfo() {
		System.out.println(studentName + "님의 남은 돈은 " + money + "입니다.");
	}
}

Subway.java

package com.day04.school;

public class Subway {
	
	private String lineNumber;
	private int passengerCount;
	private int money;
	
	public Subway(String lineNumber) {
		this.lineNumber = lineNumber;
	}
	
	public void take(int money) {
		this.money += money;
		this.passengerCount++;
	}
	
	public void showInfo() {
		System.out.println("지하철 : " + lineNumber);
		System.out.println("승객 수 : " + passengerCount);
		System.out.println("수입 : " + money);
	}

}

Bus.java

package com.day04.school;
//177
public class Bus {
	
	private int busNumber;
	private int passengerCount;
	private int money;
	
	public Bus(int busNumber) { // 4. TakeTrans.java에서 bus100이라는 객체의 번호 100 받아옴
		this.busNumber = busNumber;
	}
	
	public void take(int money) { //사람을 태운다 8. Student.java bus100.take에서 1000을 받아옴
		this.money += money; // +1000
		this.passengerCount++; // 승객 +1
	}
	public void showInfo() {
		System.out.println("버스 번호 : " + busNumber);
		System.out.println("승객 수 : " + passengerCount);
		System.out.println("수입 : " + money);
	}
}

TakeTrans.java

package com.day04.school;
//178
public class TakeTrans { //실행을 위한 main

	public static void main(String[] args) {
		
		Student s1 = new Student("홍길동", 5000); //1. 학생 s1 이름은 홍길동, 소지한 돈 5000원 -> Student.java
		Student s2 = new Student("이순신", 10000);
		
		Bus bus100 = new Bus(100); //3. bus100이라는 객체 생성 버스번호 100 -> Bus.java
		//홍길동이 버스를 타다
		s1.takeBus(bus100); //5. s1이 bus100을 탐 -> Student.java
		s1.showInfo(); //9. s1의 정보 요청 -> Student.java에서 s1의 정보 줌
		bus100.showInfo(); //10. bus100 정보 요청 -> Bus.java에서 bus100의 정보 줌
		
		
		Subway subwayGreen = new Subway("2호선");
		//이순신이 지하철을 타다
		s2.takeSubway(subwayGreen);
		s2.showInfo();
		subwayGreen.showInfo();
	}

}

 

홍길동님의 남은 돈은 4000입니다.
버스 : 100
승객 수 : 1
수입 : 1000
이순신님의 남은 돈은 8500입니다.
지하철 : 2호선
승객 수 : 1
수입 : 1500

 


 

package com.day04;
//178
public class TakeTrans {

	public static void main(String[] args) {
		Student s1 = new Student("홍길동", 5000); // p1 생성 -> 생성자 처리 -> 이름, 학년, 돈, 지하철타다, 버스타다, 정보 보여주다
		Student s2 = new Student("이순신", 10000); // p2 생성 -> 이름, 학년, 돈, 지하철타다, 버스타다, 정보 보여주다
		
		Bus bus100 = new Bus(100); // bus100 생성
		//홍길동이 버스를 타다
		s1.takeBus(bus100); //bus 100번을 탄다
		s1.showInfo();
		bus100.showInfo();
		
		Subway subwayGreen = new Subway("2호선"); // subwayGreen 생성 
		//이순신이 지하철을 타다
		s2.takeSubway(subwayGreen);
		s2.showInfo();
		subwayGreen.showInfo();
	}

}
Student s1 = new Student("홍길동", 5000);

이 문장에 의해

s1의 Student

private String studentName;
		private int grade; //학년
		private int money; //돈
		
		//생성자
		
		public Student(String studentName, int money) {
			this.studentName=studentName;
			this.money = money;
		}
		//지하철 타다
		
		public void takeSubway(Subway subway) {
			subway.take(1500);
			this.money -= 1500;
		}
		//버스 타다
		public void takeBus(Bus bus) {
			bus.take(1000);
			this.money -=1000;
		}
		//정보출력
		public void showInfo() {
			System.out.println(studentName+"님의 남은 돈은 " + money + "입니다.");
		}

이것이 전부 만들어짐

 

Student p2 = new Student("이순신", 10000);

이 문장에 의해

private String studentName;
		private int grade; //학년
		private int money; //돈
		
		//생성자
		
		public Student(String studentName, int money) {
			this.studentName=studentName;
			this.money = money;
		}
		//지하철 타다
		
		public void takeSubway(Subway subway) {
			subway.take(1500);
			this.money -= 1500;
		}
		//버스 타다
		public void takeBus(Bus bus) {
			bus.take(1000);
			this.money -=1000;
		}
		//정보출력
		public void showInfo() {
			System.out.println(studentName+"님의 남은 돈은 " + money + "입니다.");
		}

이렇게 만들어짐

 

Bus bus100 = new Bus(100);

이 문장에 의해

private int busNumber;
	private int passengerCount;
	private int money;
	public Bus(int busNumber) {
		this.busNumber = busNumber;
	}
	public void take(int money) { //사람 태움
		this.money += money;
		this.passengerCount++;
	}
	public void showInfo() {
		System.out.println("버스 : " + busNumber);
		System.out.println("승객 수 : " + passengerCount);
		System.out.println("수입 : " + money);
	}

이게 생성됨 -> Bus(100) 이므로 busNumber = 100

s1.takeBus(bus100);
public void take(int money) { //사람 태움
		this.money += money;
		this.passengerCount++;
	}

 

p2도 마찬가지


 


주말동안

~p.200 까지 공부하기

 

예습 할 사람은 예습.. 놉.

728x90
728x90