# 카멜 케이스(Camel Case)
1. 클래스명 - 대문자로 시작 ex) class MaxNumber
단어와 단어가 만나는 첫 글자는 대문자
2. 변수, 메소드는 소문자로 시작 ex) public int getNumber
3. 상수 - 전체가 대문자 ex) final int MAX_NUMBER;
단어와 단어가 만나는 사이를 _로 구분표기해주기
Q. 실습문제 2 클래스 만들기2
과일장수 클래스
인스턴스 변수
사과값
사과개수
가지고 있는 돈
메소드
인스턴스 변수를 초기화 한다. - 사과값, 사과개수, 가지고 있는 돈
구매자에게 돈을 받으면 사과를 건네준다. - 돈이 늘어나고 개수가 줄어듬
현재 자신의 상태를 출력. - 사과값, 사과개수, 가지고 있는 돈이 보여야함
구매자 클래스
인스턴스 변수
사과개수
가지고 있는 돈
메소드
인스턴스 변수를 초기화 한다. 사과개수, 가지고 있는 돈 초기화
과일장수에게 돈을 주고 사과를 받는다. - 사과 000원 주세요! 돈이 준만큼 없어지고 개수가 생김
현재 자신의 상태를 출력.
과일메인 클래스
사과장수 두명을 만든다. 객체 2개를 만들어라(NEW)
한명은 사과하나의 값은 2000 원이고 사과를 50 개 들고 있고 그리고 가진돈은 50000원이다.
또 다른 사과장수는 사과하나의 값은 1000원이고 사과를 100개를 들고 있고 그리고 가진돈은 100000원이다.
구매자는 20000원의 돈을 가지고 있으며 처음에는 사과가 하나도 없다.
2000원짜리 사과 3개와 1000원짜리 사과 5개를 구매한다.
우선은 정확히 자신이 사고싶은 만큼의 돈을 넘겨주고 거스름돈은 없는 걸로 하자.
사과 구매 후 3명(과일장수, 구매자)의 상태를 출력한다.
A.
class AppleSeller
{
int price;
int numOfApples;
int money;
public void int setApple(int price, int numOfApples, int money)
{
this.price=price; // this는 인스턴스 자기 자신의 값을 가지고 있다는 의미
this.numOfApples=numOfApples;
this.money=money; // 멤버변수=지역변수 this없으면 지역변수 우선으로 매개변수 money로 인식한다
}
public void int sellApple(int money)
{
int num=0;
this.money+=money;
num=money/price;
numOfApples -= num;
return num;
}
public void printCurrentState()
{
System.out.println("사과 값"+price);
System.out.println("사과 갯수"+numOfApples);
System.out.println("돈"+money);
}
}
class AppleBuyer
{
int numOfApples; // 인스턴스 변수는 0으로 자동 초기화 된다
int money;
public void int setApple(int money)
{
this.money=money;
this.numOfApples = 0;
}
public void int buyApple(AppleSeller seller, int money) // 문제의 가장 핵심 내용!
{
this.money-=money;
numOfApples+=seller.sell(money);
}
public void printCurrentState()
{
System.out.println("사과 갯수"+numOfApples);
System.out.println("돈"+money);
}
}
class AppleMain
{
public static void main(String[] args)
{
AppleSeller seller1 = new AppleSeller();
seller1. setApple(2000,50,50000);
seller1. sellApple();
seller1. printCurrentState();
AppleSeller seller2 = new AppleSeller();
seller2. setApple(1000,100,100000);
seller2. sellApple();
seller2. printCurrentState();
AppleBuyer buyer = new AppleBuyer();
buyer. setApple(20000);
buyer. buyApple();
buyer. printCurrentState();
buyer. buyApple(seller1,6000);
seller1. printCurrentState();
seller2. printCurrentState();
buyer. printCurrentState();
buyer. buyApple(seller2,5000);
seller1. printCurrentState();
seller2. printCurrentState();
buyer. printCurrentState();
}
}
#생성자 : 객체 생성하면서 값을 초기화하는 것을 지원하는 것
- 문법적 특징
1. 생성자의 이름은 클래스의 이름과 대소문자까지 완벽하게 일치해야 한다
2. 생성자는 반환하는 값이 없고, 반환하는 값의 자료형을 표시하지 않는다 - void 사용 안함
3. 메소드 내에서는 상수를 초기화할 수 없다 - 메소드가 언제든 호출할 수 있기 때문!
생성자 내에서는 상수를 초기화 가능하다
4. 생성자는 단 한번만 호출되는 특수 형태의 메소드이다
ex)
AppleSeller seller1 = new AppleSeller();
// ㄴ 생성자(constructor)
- 상수는 메소드 내에서 초기화 되지 않지만 생성자 내에서는 초기화 가능하다
- 모든 클래스는 문법적으로 반드시 생성자가 있어야 한다
개발자가 생성자를 만들어놓지 않으면 자바가 자동으로 public Number {} (디폴트 생성자)를 삽입을 시킨다
개발자가 생성자를 만들어두면 디폴트 생성자가 삽입되지 않는다
# String 클래스의 사용법
String name = "홍길동“;
System.out.println(name);
문자열은 “ ”로 초기화해준다
Q. 다음 조건을 만족하는 클래스를 정의해보자.
* 어린아이가 소유하고 있는 구슬의 개수 정보를 담을 수 있다.
* 놀이를 통한 구슬의 주고받음을 표현하는 메소드가 존재한다.
* 어린이의 현재 보유자산(구슬의 수)을 출력하는 메소드가 존재한다.
위의 두 번째 조건은 두 아이가 구슬치기를 하는 과정에서 구슬의 잃고 얻음을 의미하는 것이다.(이 문제 마지막까지 읽어야 필요한 메소드가 무엇인지 정확히 파악할 수 있다.) 위의 조건을 만족하는 클래스를 정의하였다면, 다음 조건을 만족하는 인스턴스를 각각 생성하자.
* 어린이1의 보유자산 -> 구슬 15개
* 어린이2의 보유자산 -> 구슬 9개
인스턴스의 생성이 완료되면 다음의 상황을 main 메소드 내에서 시뮬레이션 하자.
"1차 게임에서 어린이1은 어린이2의 구슬 2개를 획득한다."
"2차 게임에서 어린이2는 어린이1의 구슬 7개를 획득한다."
마지막으로 각각의 어린이가 보유하고 있는 구슬의 수를 출력하면서 프로그램을 종료한다.
A.
class Child
{
String name;
int beads;
public Child(string name, int beads)
{
this.name=name;
this.beads=beads;
}
public void win(Child child, int beads)
{
this.beads+=child.lose(beads);
}
public void lose(int beads)
{
if(this.beads < beads)
{
int temp = 0;
temp = this.beads;
this.beads=0;
return temp;
}
this.beads-=beads;
return beads;
}
public int printCurrentState()
{
System.out.println(name+" "+beads);
}
}
class ChildMain
{
public static void main(String[] args)
{
Child child1=new Child("어린이1", 15);
Child child2=new Child("어린이2", 9);
Child1.win(child2, 2);
child1.printcurrentState();
child2.printcurrentState();
Child2.win(child1, 7);
child1.printcurrentState();
child2.printcurrentState();
}
}
- 클래스 - 틀, ex) 붕어빵틀
객체 - 여러 개 만들어서 각자 경주 등 가능 ex) 화랑, 경주, 붕어빵
ㄴ 오브젝트 하나하나가 독립적으로 움직이는 것
'SW > Java' 카테고리의 다른 글
[필기정리] Day8-1 - static변수, 메소드 오버로딩 등 (0) | 2020.06.21 |
---|---|
[필기정리] Day7 - 클래스패스, 접근제어 지시자, 엑세스메소드 등 (0) | 2020.06.21 |
[필기정리] Day5 - return, 재귀메소드 등 (0) | 2020.06.21 |
[필기정리] Day4 - 형변환, 비트연산자 등 (0) | 2020.06.21 |
[필기정리] Day3 - 난수, 진법, 예시문제 (0) | 2020.06.19 |