멋쟁이 사자처럼 2기 150일간의 기록

멋쟁이 사자처럼 백엔드스쿨 2기 4일차 D - 147 : 반복문, 객체지향

정현3 2022. 9. 22. 10:11
  • 반복문과 조건문에 대한 복습과 Lotto번호 만들기, Up&Down 게임 만들기에 대한 발표를 진행하였고 객체지향과 클래스에 관한 내용을 수업하였다
  • Up&Down 게임 만들기 의 코드를 리팩토링하고, 각 과목의 점수를 입력받고 출력하는 Grade 클래스를 만드는 과제를 진행하였다

 

객체지향

클래스 정의 후 객체생성

1. 클래스 정의
2. 참조 변수 선언 Circle  obj;
3. 객체 생성 obj = new Circle();
4. 객체의 필드 접근 obj.color = "blue";
5. 객체 메서드 접근 double area = obj.calcArea();

어떤 클래스로부터 만들어진 객체를 그 객체의 '인스턴스'라 한다.
-> 객체는 모든 인스턴스를 대표하는 포괄적인 의미
-> 인스턴스는 어떤 클래스로부터 만들어진 것인지를 보다 강조하는 의미

클래스 - 사용자 정의 타입

로또번호 - 중복제거 기능 없음

package LionArray;

/**
 * 배열 6개 선언
 * 1부터 45 랜덤으로 숫자를 넣고 출력하시오. 단 중복없이
 */
public class ArrayLotto {
    public static void main(String[] args) {

        int[] ball = new int[45]; //45개의 정수값을 저장하기 위한 배열 생성

        //1. 배열의 각 요소에 1 ~ 45의 값을 저장한다
        for (int i = 0; i < ball.length; i++) {
            ball[i] = i + 1; //ball[0]에 1이 저장된다
        }
        int tmp = 0; //두 값을 바꾸는데 사용할 임시변수
        int k = 0; //임의의 값을 얻어서 저장할 변수

        //2. 배열의 i번째 요소와 임의의 요소에 저장된 값을 서로 바꿔서 값을 섞는다.
        for (int i = 0; i < 6; i++) { //6개만 바꾼다
            k = (int) (Math.random() * 45); //0 ~ 44범위의 임의의 값을 얻는다 - 범위의 값을 모두 얻어어 해당 인덱스의 값을 바꿀 수 있다

            tmp = ball[i];
            ball[i] = ball[k];
            ball[k] = tmp;
        }

        //배열 ball의 앞에서부터 6개의 요소를 출력한다
        for (int i = 0; i < 6; i++) {
            System.out.printf("ball[%d] = %d%n" , i , ball[i]);
        }
    }
}

로또 번호 - 중복 제거 기능 추가

package LionArray;

import java.util.Arrays;

public class ArrayLotto2 {
    public static void main(String[] args) {

        int[] arrLotto = new int[6]; //6개의 값을 생성하기 위한 배열 생성

        for (int i = 0; i < arrLotto.length; i++) { // i = 1
            arrLotto[i] = (int) (Math.random() * 45) + 1;

            for (int k = 0; k < i; k++) {
                if (arrLotto[i] == arrLotto[k]) //중복이 나오면 다시 반복한다
                    i--; //i = 0
            }
        }
        System.out.println(Arrays.toString(arrLotto));
    }
}

별찍기 - 변수이름 고려

package Mission;
import java.util.Scanner;

public class Mission1_2 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int numOfLines = sc.nextInt(); //층의 높이

        for (int i = 0; i < numOfLines; i++) { //층 높이

            for (int k = 0; k < numOfLines - i; k++) { //줄 갯수만큼 루프 - (중앙 - 1)에서 하나씩 감소
                System.out.print(" ");
            }
            for (int k = 0; k < (i * 2) - 1; k++) { // 1,3,5...(줄 갯수 * 2)-1 식으로 증가
                System.out.print( "* ");
            }
            System.out.println(""); //줄 바꿈
        }
        sc.close(); //OS자원을 돌려주고, 추가적인 스캐너 입력 방지
    }
}

if문

if (true or false) {
     조건 true 시 실행되는 영역
}

-> if문에 속한 문장이 하나일 경우 중괄호 생략 가능

else if문

if (true or false) {
    조건 true 시 실행되는 영역
} else {
    조건 false 시 실행되는 영역
}

switch문

 

switch문을 써서 case 작성 - 제약조건

package LionArray;
import java.util.Scanner;

public class Switch {
    public static void main(String[] args) {

        System.out.println("현재 월을 입력하세요 : ");

        Scanner scanner = new Scanner(System.in);
        int month = scanner.nextInt(); //화면을 통해 입력받은 숫자를 month에 저장

        switch(month) {
            case 3 : case 4 : case 5 :
                System.out.print("현재 계절은 봄입니다");
                break;
            case 6 : case 7 : case 8 :
                System.out.print("현재 계절은 여름입니다");
                break;
            case 9 : case 10 : case 11 :
                System.out.print("현재 계절은 가을입니다");
                break;
            case 12 : case 1 : case 2 :
                System.out.println("현재 계절은 겨울입니다");
                break;
            default:
                System.out.println("1 ~ 12 사이의 수로 다시 입력해주세요");
                break;
        }
        System.out.println("end");
    }
}

가위바위보 게임

package LionArray;
import java.util.Random;
import java.util.Scanner;

public class LockSessoirs {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        System.out.println("가위바위보 게임");
        System.out.println("(1. 주먹 2. 가위 3. 보");
        System.out.print("숫자를 입력하세요 : ");

        int com = 0;
        int user = sc.nextInt();

        Random r = new Random();

        com = r.nextInt(3) + 1;

        System.out.println("유저 : " + user);
        System.out.println("컴퓨터 : " + com);

        if (user == 1) {
            if (com == 2) {
                System.out.println("승리");
            } else if (com == 3) {
                System.out.println("패배");
            } else {
                System.out.println("무승부");
            }
        } else if (user == 2) {
            if (com == 2) {
                System.out.println("무승부");
            } else if (com == 3) {
                System.out.println("승리");
            } else {
                System.out.println("패배");
            }
        } else if (user == 3) {
            if(com == 2){
                System.out.println("패배");
            } else if(com == 3){
                System.out.println("무승부");
            } else {
                System.out.println("승리");
            }
            } else {
            System.out.println("다시 입력해주세요");
        }

        sc.close();

    }
}

 

객체지향 - 학생 프로필

package OOP;

public class OopStudent {
    public static void main(String[] args) {

        Student student = new Student();

        student.name = "Kim";
        student.id = "20221937";
        student.age = 20;

        System.out.println("학생의 이름 : " + student.getName());
        System.out.println("학생의 학번 : " + student.getId());
        System.out.println("학생의 나이 : " + student.getAge());
    }
}
class Student {
    String name;
    String id;
    int age;

    public String getName() {
        return name;
    }
    public String getId() {
        return id;
    }
    public int getAge() {
        return age;
    }
}

학생

package OOP;

class Rectangle{ //static 금지
    int width;
    int height;

    public void setWidth(int width) {
        this.width = width;
    }

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

    public int getArea() {
        return width * height;
    }
}

public class StudentApp {

    public static void main(String[] args) {

        Rectangle rectangle = new Rectangle();

        rectangle.setWidth(10);
        rectangle.setHeight(10);

        Rectangle rectangle2 = new Rectangle();

        rectangle2.setWidth(20);
        rectangle2.setHeight(20);

        System.out.println(rectangle.getArea()); //10
        System.out.println(rectangle2.getArea());
    }
}