this : 객체 자신을 가리킴

1) 인스턴스 자신의 메모리를 가리킴

2) 생성자에서 다른 생성자를 호출

클래스에 생성자가 여러 개인 경우, this를 이용하여 생성자에서 다른 생성자를 호출 할 수 있음

생성자에서 다른 생성자를 호출하는 경우, 인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 사용할 수 없음 

package ch11;

public class Person {
	String name;
	int age;
	
	public Person() {
    //생성자에서 다른 생성자를 호출하는 경우, 
    //인스턴스의 생성이 완전하지 않은 상태이므로 this() statement 이전에 다른 statement를 사용할 수 없음 
		this("이름없음",1);
		
	}
	public Person(String name, int age) {
		this.name=name;
		this.age=age;
		
	}
}

3) 자기 자신의 주소를 반환하는 this

package ch11;

public class Person {
	String name;
	int age;
	
	public Person() {
		
		this("이름없음",1);
		
	}
	public Person(String name, int age) {
		this.name=name;
		this.age=age;
		
	}
	public void showPerson() {
		System.out.println(name+","+age);
	}
	public Person getPerson() {
		//반환 타입이 자기 자신
		return this;
	}
	public static void main(String[] args) {
		Person person = new Person();
		person.showPerson();
		
		System.out.println(person);
		//ch11.Person@515f550a
		
		Person person2= person.getPerson();
		System.out.println(person2);
		//ch11.Person@515f550a
	}
}

MakeReport

package ch11;

public class MakeReport {
	StringBuffer buffer = new StringBuffer();
	
	private String line="======================================\n";
	private String title="이름 \t   주소\t\t   전화번호\n";
	private void makeHeader() {
		buffer.append(line);
		buffer.append(title);
		buffer.append(line);
	}
	
	private void generateBody() {
		buffer.append("James \t");
		buffer.append("Seoul Korea \t");
		buffer.append("010-2222-3333\n");
		
		buffer.append("Tomas  \t");
		buffer.append("NewYork US \t");
		buffer.append("010-7777-8888\n");
	}
	
	private void makeFooter() {
		buffer.append(line);
		
	}
	public String getReport() {
		//client code에 getRoport()만 제공함!<- 캡슐화
		makeHeader();
		generateBody();
		makeFooter();
		//위 세개 함수는 private로 
		return buffer.toString();
	}
}

MakeReportTest

package ch11;

public class MakeReportTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MakeReport builder = new MakeReport();
		String report= builder.getReport();
		
		System.out.println(report);
	}

}

Birthday

package ch10;

public class BirthDay {
	
	private int day;
	private int month;
	private int year;
	
	private boolean isValid;
	
	public int getDay() {
		//get메서드
		return day;
	}
	public void setDay(int day) {
		this.day=day;
				
	}
	public int getMonth() {
		return month;
	}
	public void setMonth(int month) {
		
		//set메서드에서 값을 제어
		if(month<1||month>12) {
			isValid=false;
		}
		else {
		isValid=true;
		}
		this.month = month;
	}
	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}
	
	public void showDate() {
		if(isValid) {
			System.out.println(year+"년"+month+"월"+day+"일");
		}
		else {
			System.out.println("유효하지 않습니다");
		}
	}
}

BirthdayTest

package ch10;

public class BirthdayTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		BirthDay date= new BirthDay();
		date.setYear(2019);
		date.setMonth(13);
		date.setDay(23);
		
		date.setYear(2019);
		date.setMonth(12);
		date.setDay(23);
		
		date.showDate();
	}

}

학생은 국어 과목, 수학 과목을 수강중이며 각 과목의 총점을 계산하는 프로그램을 작성하라

 

Subject

package ch09;

public class Subject {
	
	public String subjectName;
	public int score;
	public int subjectID;

}

Student

package ch09;

public class Student {

	int studentID;
	String studentName;
	Subject korea; //참조 자료형
	Subject math; //참조 자료형
	
	public Student(int id,String name) {
		studentID=id;
		studentName=name;
		korea= new Subject(); //생성을 해줘야 O , 대부분 생성자에서 생성
		math= new Subject(); // 생성을 해줘야 O
		
		
	}
	
	public void setKoreaScore(String name, int score) {
		//main에서 korea. 으로 설정해도 O
		korea.subjectName=name;
		korea.score=score;
	}
	public void setMathScore(String name, int score) {
		math.subjectName=name;
		math.score=score;	
	}
	
	public void showScoreInfo() {
		
		int total=korea.score+math.score;
		System.out.println("Total: "+total);
		
	}
}

TotalScore

package ch09;

public class TotalScore {
	//각 학생의 총점을 구함

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student studentKwak = new Student(10,"kwakseoyeon");
		Student studentLee = new Student (11, "Leeyeonwoo");
		Student studentKim = new Student (12, "Kimseowoo");
		
		studentKwak.setKoreaScore("korea", 90);
		studentKwak.setMathScore("math",80);
		
		studentLee.setKoreaScore("korea", 70);
		studentLee.setMathScore("math",30);
		
		studentKim.setKoreaScore("korea", 20);
		studentKim.setMathScore("math", 100);
		
		int KwakTotal= studentKwak.korea.score+studentKwak.math.score;
		int LeeTotal= studentLee.korea.score+studentLee.math.score;
		int KimTotal= studentKim.korea.score+studentKim.math.score;
		
		System.out.println(studentKwak.studentName+" Total: "+KwakTotal);
		System.out.println(studentLee.studentName+" Total: "+LeeTotal);
		System.out.println(studentKim.studentName+" Total: "+KimTotal);
		
	}

}

과제1

Person

package ch01;

public class Person {

	public int heigth;
	public int weight;
	public int age;
	public String name;
	
	public Person() {
		
	}
	public Person(int heigth, int weight, int age, String name) {
		
		this.heigth=heigth;
		this.age = age;
		this.weight=weight;
		this.name=name;
		
	}
	public void printinfo() {
		System.out.println("키는 "+heigth);
		System.out.println("몸무게는 "+weight);
		System.out.println("나이는 "+age);
		System.out.println("이름은 "+name);
		
	}
	
}

PersonTest

package ch01;

public class PersonTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Person tomasInfo = new Person(180,78,20,"Tomas");
		
		tomasInfo.printinfo();
	}

}

과제2

Delivary

package ch01;

public class Delivary {
	public String orderNum;
	public String orderPhoneNum;
	public String address;
	public int date;
	public int price;
	public int menuNum;
	
	public Delivary() {
		
	}
	public Delivary(String orderNum, String orderPhoneNum,String address, int date, int price, int menuNum) {
		this.orderNum=orderNum;
		this.orderPhoneNum=orderPhoneNum;
		this.address=address;
		this.date=date;
		this.price=price;
		this.menuNum=menuNum;
	}
	public void printInfo() {
		System.out.println("주문 접수 번호: "+orderNum);
		System.out.println("주문 핸드폰 번호: "+orderPhoneNum);
		System.out.println("주문 집 주소: "+address);
		System.out.println("주문 날짜: "+date);
		System.out.println("주문 가격: "+price);
		System.out.println("메뉴 번호: "+menuNum);
		
	}
	
}

DelivaryOrder

package ch01;

public class DelivaryOrder {

	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Delivary order1 = new Delivary("202011020003","01023450001","서울 강남시 역삼동 111-333", 20201102,35000,3);
		order1.printInfo();
		
	}

}
package ch01;


public class Student {
	public int studentNumber;
	public String studentName;
	public int grade;
	
	public Student() {
		//client code에서 default생성자를 사용하고 싶을 때 따로 생성해주기
	}
	public Student(int studentNumber, String studentName) {
		//매개변수로 정보를 받아 생성자에서 초기화 시키고자 할 때
		
		//가장 가까운 곳에서 변수를 받아오기 때문에 매개변수에 매개변수를 대입하는 꼴이 됨
		studentNumber= studentNumber;
		// 하지만 원하는 건 매개변수를 멤버변수에 대입하는 것
		// this를 사용해 멤버변수임을 지정해주기
		this.studentNumber=studentNumber;
		this.grade=grade;
		this.studentName=studentName;
		
		//생성자는 객체가 생성될떄 실행되는 함수
		System.out.println("student 생성");
	}
	public String showStudentInfo() {
		
		return studentName+"학생의 학번은 "+studentNumber+", "+grade+"학년입니다.";
	}
	
	}
package ch01;

public class StudentTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			Student StudentLee= new Student();
			
			System.out.println(StudentLee.showStudentInfo());
			
			Student studentKim = new Student(123456,"kim");
			System.out.println(studentKim.showStudentInfo());
	}

}
package ch01;


public class Student {
	
	public int studentId;
	public String studentName;
	public String address;
	
	public void showStudentInfo() {
		
		System.out.println(studentId);
		System.out.println("Name: "+studentName);
		System.out.println("address: "+address);
		
	}
	
	public String getStudentName() {
			return studentName;
	}
	public void setStudentName(String name) {
			studentName= name;
	}
	
	}
package ch01;

public class StudentClass {
	public static void main(String[] args) {
		
		Student studentLee = new Student(); //instance 생성
		
		studentLee.studentId=123;
		studentLee.setStudentName("Lee");
		studentLee.address="서울 강남구";
		
		studentLee.showStudentInfo();
		
		
		Student studentKim= new Student(); //instance 생성
		studentKim.studentId=456;
		studentKim.setStudentName("Kim");
		studentKim.address="경기도 송파시";
		
		studentKim.showStudentInfo();
	}
}

객체의 속성은 멤버 변수로, 객체의 기능은 method로 구현

 

 

용어 정리

객체: 객체 지향 프로그램의 대상, 생성된 인스턴스

클래스: 객체를 프로그래밍하기위해 코드로 정의해 놓은 상태

인스턴스: new 키워드를 사용하여 클래스를 메모리에 생성한 상태

멤버 변수: 클래스의 속성, 특성

메서드: 멤버 변수를 이용하여 클래스의 기능을 구현한 함수

참조 변수 : 메모리에 생성된 인스턴스를 가리키는 변수 (ex. StudentLee)

참조값: 생성된 인스턴스의 메모리 주소 

package ch01;

class School{
	//class를 여러개 가질 수 있음
} 
public class Student { // 그러나 public class는 단 하나 , 자바 파일의 이름과 클래스 이름이 같아야O
	int studentNumeber;
	String studentName;
	int majorCode;
	String majorName;
	int grade;
	
	
	
}
package ch01;


public class Student { // 그러나 public class는 단 하나 , 자바 파일의 이름과 클래스 이름이 같아야O
	public static int addNum(int num1, int num2) {
		
		int result;
		result=num1+num2;
		return result;
	}
	public static void sayHello(String greeting) {
		System.out.println(greeting);
	}
	public static int calSum() {
		int sum=0;
		int i;
		for(i=0;i<10;i++) {
			sum+=i;
		}
		return sum;
	}
	public static void main (String[] args) {
		int n1=10;
		int n2=20;
		
		int total= addNum(n1,n2);
		System.out.println(total);
		
		sayHello("안녕하세요");
		
		total=calSum();
		System.out.println(total);
	}
}

 

 

 

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

[JAVA] 객체지향입문- 과제  (0) 2023.01.21
[JAVA] 객체지향입문- 생성자(Constructor)  (0) 2023.01.21
[java] 자바 프로그래밍 - 연산자  (0) 2023.01.04
[java] 자바 프로그래밍 - 상수  (0) 2023.01.04
[GUI]  (0) 2022.12.22

+ Recent posts