티스토리 뷰

클래스

클래스는 프로그램 상에서 그 자체로 사용되는 기능이나 동작이라기 보다 객체를 만드는 '틀'이다.

클래스와 객체의 관계는 마치 문서양식과 출력물, 또는 붕어빵 틀과 붕어빵의 관계와 같다.

우리가 직접 사용하는 것은 클래스를 통해 생성된 객체다.

 

예를 들어 Random rd = new Random 에서의 new는 새로운 반환값이 생겼다는 것을 의미한다.

Scanner scan = new Scanner(system.on) 에서 system.indm은 파라메터를 호출한다는 의미다.

 

 

<객체표현방법(추상화)>

3개의 클래스를 사용해 움직임을 표시하는데, 메소드를 활용한다. (void 안에 움직임을 넣는다.)

정보를 가져오는 경우는 메소드 안에 넣지 않고 필드에 위치시킨다.(아래 참고)

import java.util.Scanner; //import 해와야함
public class Testride {

	public static void main (String[] args) {
		

	System.out.println("원하는 탈 것 번호를 선택하세요");
	System.out.println("1)자전거 2)말 3)자동차");
	Scanner scan = new Scanner(System.in);
	int input = Integer.parseInt(scan.nextLine());
	
	if(input==1) {  //상수일때 같다 표시 ==인 것 잊지말기
		Bicycle b1 = new Bicycle();
		b1.start();
		b1.change();
		b1.end();
	
	}else if (input==2) {
		Horse h1 = new Horse();
		h1.walk();
		h1.run();
		h1.jump();
		h1.sound();
		h1.stop();
	
	}else if (input==3) {
		Car c1 = new Car();
		c1.start();
		c1.speedup();
		c1.drift();
		c1.slowdown();
		c1.stop();
	}
}
}

출력값)

원하는 탈 것 번호를 선택하세요
1)자전거 2)말 3)자동차
3 (input==3)
출발한다
속력을 높인다
드리프트한다
속력를 낮춘다
멈춘다

 

 

1st class

public class Bicycle {

	void change() {
		System.out.println("기어를 올린다" );
	
	}
	void start() {
		System.out.println("출발한다");
		
	}
	void end() {
		System.out.println("멈춘다");
	}
	
}

2nd class

public class Horse {

	void run() {
		System.out.println("달린다" );
	}
	void walk() {
		System.out.println("걷는다");
	}
	void stop() {
		System.out.println("멈춘다");
	}
	void jump() {
		System.out.println("점프한다");
	}
	void sound() {
		System.out.println("히히힝 운다");
	}
	
}

3rd class

public class Car {

	void start() {
		System.out.println("출발한다" );
	}
	void slowdown() {
		System.out.println("속력를 낮춘다");
	}
	void speedup() {
		System.out.println("속력을 높인다");
	}
	void drift() {
		System.out.println("드리프트한다");
	}
	void stop() {
		System.out.println("멈춘다");
	}
	
	
}

 

<class>

정보를 받는 변수를 메소드 외부, 즉 필드(Field)에 위치시킨다.

 

Field는 객체의 고유 데이터, 객체가 가져야할 부품, 객체의 현재 상태 데이터를 저장하는 곳이다. 자동차 객체를 예로 들면 제작회사, 모델, 색깔, 최고 속도는 고유 데이터에 해당하고, 현재 속도, 엔진 회전 수는 상태 데이터에 해당한다. 그리고 차체, 엔진, 타이어는 부품에 해당한다. 따라서 자동차 클래스를 설계할 때 이 정보들은 필드로 선언되어야 한다!

자동차 객체 자동차 클래스 
public class Car{
[고유 데이터]
제작회사
모델
색깔
최고 속도
   String company;
   String model;
   String color;
   int maxSpeed;
[상태]
현재 속도
엔진 회전 수
   int speed;
   int rpm;
[부품]
차체
엔진
타이어
   Body body;
   Engine

 

public class Ride {

	String name;
	int year;
	String brand;
	
	void name() {
		System.out.println("차종" + name);
	}
	void year() {
		System.out.println("연식" + year);
	}
	void brand() {
		System.out.println("제조사" + brand);
	}
		
}
public class Portal {

	String name;
	int year;
	
	void name() {
		System.out.println("이름" + name);
	}
	void year() {
		System.out.println("개설연도" + year);
	}
	
}
public class Cafe {

	String name;
	String bean;
	int price;
	
	void name() {
		System.out.println( name + "를 선택하셨습니다");
	}
	void bean() {
	System.out.println("사용되는 원두는 " + bean + "입니다");
	}
	
	void price() {
		System.out.println("결제하실 금액은 " + price + "원입니다");
	}
	
}

 

 

package my;

import java.util.ArrayList;

import you.Dog;

public class Main {
	/**
	 *   public 여기 저기 다 접근
	 *   default(아무것도 없음) 같은 패키기 내에서 접근
	 *   private 클래스 내부에서만 접근
	 *   
	 *   static
	 *   1. 공통 공간으로 사용
	 *   2. 객체를 만들 필요없이 '클래스이름.'으로 접근
	 *   3. static 속성에서 non-static으로는 접근 불가
	 *   
	 *  **/
	
	public static void main(String[] args) {
		ArrayList<Dog> dogArr = new ArrayList<Dog>();
		
		Dog balbal2 = new Dog("바둑이1", 8000);
		Dog bulDog = new Dog("파이어1", 3000);
		
		dogArr.add(balbal2);
		dogArr.add(bulDog);
		
		System.out.println(Dog.age);
		
		Util.nickname ="바보";
		
		System.out.println(Util.chkTXT("야 이 바보야"));
	}

}

 

package you;

import my.Util;

public class Dog {
	public String name;
	public static int age;
	
	public Dog(String name, int age) {		
		this.name = name;
		this.age = age;
	}

	void run() {
		Util.chkTXT("ㅇㅇ");
		System.out.println("개가 뛴다");
	}
	
	public void eat() {
		run();
		System.out.println("처묵 처묵");
	}
	
}

 

 

package my;

public class Util {
	public static String nickname = "";
	public static String chkTXT(String ori) {
		return ori.replace("병신", "**").replace("바보", "**");
	}
}

 

 

<연습문제>

사지선다형 퀴즈  project를 클래스를 활용해 구조 변환하기(기존 랜덤문제 변형)

Quiz클래스는 메소드로 기능하지 않고 field에 공통 데이터를 저장하는 역할만 한다 (문제의 틀)

Quiz클래스의 형태대로 문제와 보기 정답을 함께 묶어준다.

이렇게 묶여진 세개의 문제를 ArrayList로 다시한번 묶어준다.

즉 각각의 문제는 문제, 보기, 정답이 함께 묶인 상태로 ArrayList에 저장되게 된다.

 

또한 ArrayList<~> ~안에는 Quiz 를 넣어준다!

 

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int score = 0;
		String[] questionArr = new String[3];
		String[] ch1 = new String[3];
		String[] ch2 = new String[3];
		String[] ch3 = new String[3];
		String[] ch4 = new String[3];
		String[] ans = new String[3];

		Quiz q1 = new Quiz();
		q1.question = "한국의 수도는?";
		q1.ch1 =  "광주";
		q1.ch2 =  "부산";
		q1.ch3 =  "서울";
		q1.ch4 =  "인천";
		q1.ans = "3";
	
		Quiz q2 = new Quiz();
		q2.question ="1+1 = ?";
		q2.ch1 =  "5";
		q2.ch2 =  "2";
		q2.ch3 =  "1";
		q2.ch4 =  "100000";
		q2.ans = "2";

		Quiz q3 = new Quiz();
		q3.question ="강의실 몇 층?";
		q3.ch1 =  "20000";
		q3.ch2 =  "1000";
		q3.ch3 =  "1";
		q3.ch4 =  "14";
		q3.ans = "4";
		
		ArrayList<Quiz> quesArr = new ArrayList<Quiz>();
		quesArr.add(q1);
		quesArr.add(q2);
		quesArr.add(q3);

		for (int i = 0; i < quesArr.size(); i++) {
			System.out.println(i+1+". "+ quesArr.get(i).question);
			System.out.println("  1)"+quesArr.get(i).ch1);
			System.out.println("  2)"+quesArr.get(i).ch2);
			System.out.println("  3)"+quesArr.get(i).ch3);
			System.out.println("  4)"+quesArr.get(i).ch4);
			
			
		}

	}

}

 

 

public class Quiz {
	String question;
	String ch1;
	String ch2;
	String ch3;
	String ch4;
	String ans;
}

 

+

생성자로 코드 깔끔하게 정리하기

		Quiz q1 = new Quiz();
		q1.question = "한국의 수도는?";
		q1.ch1 =  "광주";
		q1.ch2 =  "부산";
		q1.ch3 =  "서울";
		q1.ch4 =  "인천";
		q1.ans = "3";

 

		Quiz q1 = new Quiz("한국의 수도는?","광주", "부산", "서울", "인천", "3");

 

		quesArr.add(new Quiz("한국의 수도는?","광주", "부산", "서울", "인천", "3"));

이걸 그대로 q1자리에 바로 넣어줄 수 있다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함