Java 입문 클래스 5회차 미션

    5회차 미션

    배운내용,깨달은 점

    git의 사용법과 객체지향프로그래밍에 대한 이해

    https://transfer-kk.tistory.com/60

     

    git 사용법-1 (git commit, git log, git stash)

    git commit 관련 작업 폴더에서 git을 사용하고 싶을 때 git init 부터 입력 (터미널 -> 새 터미널에 입력) => .git repository를 만들어야 함 git add blabla.txt => 내가 기록할 파일 고르기 git add one.txt two.txt => 두

    transfer-kk.tistory.com

    https://transfer-kk.tistory.com/61

     

    git 사용법-2 (git 되돌리는 방법)

    코드를 짜다가 실수해서 되돌아가야 할 때 git restore 파일명 => 파일을 최근 commit으로 되돌려 줌 git restore --source 커밋아이디 파일명 => 입력한 파일이 특정 커밋아이디 시점으로 복구된다. git restor

    transfer-kk.tistory.com

    https://transfer-kk.tistory.com/62

    어려웠던 점, 반성하고 싶은 점/개선할 방법

    아직 브랜치를 만들고 병합하는 과정은 조금 어려운 것 같습니다. 협업을 위해서 좀 더 git에 대해 공부할 필요성을 느꼈습니다.

    미션제출

    연습문제 1 공학용 계산기 만들기

    // Main.java
    
    public class Main {
        public static void main(String[] args) {
            Calculator calculator = new Calculator();
            System.out.println("3+4는 " + calculator.add(3, 4) + "입니다.");
            System.out.println("6-2는 " + calculator.minus(6, 2) + "입니다.");
            System.out.println("2*9는 " + calculator.multiply(2, 9) + "입니다.");
            System.out.println("9/3은 " + calculator.divide(9, 3) + "입니다.");
        }
    }
    
    // Calculator.java
    
    public class Calculator {
        int add(int a, int b){
            return a+b;
        }
        int minus(int a, int b){
            return a-b;
        }
        int multiply(int a, int b){
            return a*b;
        }
        double divide(int a, int b){
            return a/b;
        }
    }

    연습문제  2  

    // Main.java
    
    public class Main {
        public static void main(String[] args) {
            Calculator calculator = new Calculator();
            System.out.println("3+4는 " + calculator.add(3, 4) + "입니다.");
            System.out.println("6-2는 " + calculator.minus(6, 2) + "입니다.");
            System.out.println("2*9는 " + calculator.multiply(2, 9) + "입니다.");
            System.out.println("9/3은 " + calculator.divide(9, 3) + "입니다.");
    
            ScientificCalculator scientificCalculator = new ScientificCalculator();
            System.out.println("3+4는 " + scientificCalculator.add(3, 4) + "입니다.");
            System.out.println("6-2는 " + scientificCalculator.minus(6, 2) + "입니다.");
            System.out.println("2*9는 " + scientificCalculator.multiply(2, 9) + "입니다.");
            System.out.println("9/3은 " + scientificCalculator.divide(9, 3) + "입니다.");
            System.out.println("3^2는 " + scientificCalculator.square(3) + "입니다.");
        }
    }
    
    // ScientificCalculator.java
    
    public class ScientificCalculator extends Calculator{
        int square(int a){
            return a*a;
        }
    }
    
    //Calculator.java
    
    public class Calculator {
        int add(int a, int b){
            return a+b;
        }
        int minus(int a, int b){
            return a-b;
        }
        int multiply(int a, int b){
            return a*b;
        }
        double divide(int a, int b){
            return a/b;
        }
    }

    연습문제 3  고양이 인형 만들기

    // Main.java
    
    public class Main {
    
        public static void main(String[] args) {
            Cat cat = new Cat();
            cat.soundGenerally();
            cat.soundCutely();
            cat.soundAngry();
    
            AngryCat angryCat = new AngryCat();
            angryCat.soundGenerally();
            angryCat.soundCutely();
            angryCat.soundAngry();
        }
    }
    
    // Cat.java
    
    public class Cat {
        protected void soundGenerally(){
            System.out.println("야옹");
        }
        protected void soundCutely(){
            System.out.println("냥냥");
        }
    	protected void soundAngry(){
            System.out.println("크르릉");
        }
    }
    
    // AngryCat.java
    
    public class AngryCat extends Cat{
        protected void soundAngry(){
            System.out.println("크르르르르르냐아아아앙");
        }
    }

    연습문제 4  JSCODE 학교의 시험 채점기

    // Main.java
    
    package ch5.practice.jscodeexam;
    
    public class Main {
    
        public static void main(String[] args) {
            ExamProgram examProgram = new ExamProgram();
            examProgram.execute();
        }
    }
    
    // ExamProgram.java
    
    package ch5.practice.jscodeexam;
    
    import java.util.Scanner;
    
    public class ExamProgram {
    
        private int year = 0;
        private int htmlScore = 0;
        private int cssScore = 0;
        private int JavascriptScore = 0;
    
        private void setCssScore(int cssScore) {
            this.cssScore = cssScore;
        }
    
        private void setHtmlScore(int htmlScore) {
            this.htmlScore = htmlScore;
        }
    
        private void setJavascriptScore(int javascriptScore) {
            JavascriptScore = javascriptScore;
        }
    
        private void setYear(int year) {
            this.year = year;
        }
    
        private int getJavascriptScore() { //get함수도 private로 설정하는 것이 맞나?
            return JavascriptScore;
        }
    
        private int getHtmlScore() {
            return htmlScore;
        }
    
        private int getCssScore() {
            return cssScore;
        }
    
        private int getYear() {
            return year;
        }
    
        private double getAverage() {
            return (getCssScore() + getHtmlScore() + getJavascriptScore()) / 3.0;
        }
    
        private int getMaxScore() {
            return Math.max(Math.max(getCssScore(), getHtmlScore()), getJavascriptScore());
        }
    
        private int getMinScore() {
            return Math.min(Math.min(getCssScore(), getHtmlScore()), getJavascriptScore());
        }
    
        protected void execute() {
            inputInformation();
            printInformation();
        }
    
        private void inputInformation() {
            Scanner scanner = new Scanner(System.in);
            System.out.println("몇 기인지 입력해주세요.");
            setYear(scanner.nextInt());
            System.out.println("HTML 과목 점수를 입력해주세요.");
            setHtmlScore(scanner.nextInt());
            System.out.println("CSS 과목 점수를 입력해주세요.");
            setCssScore(scanner.nextInt());
            System.out.println("Javascript 과목 점수를 입력해주세요.");
            setJavascriptScore(scanner.nextInt());
        }
    
        private void printPassInformation() {
            if (isPassedByScore100()) {
                System.out.println("합격입니다.");
                return;
            }
            if (getYear() == 3) {
                printPassInformationByCutline(70);
            } else if (getYear() == 1 || getYear() == 2) {
                printPassInformationByCutline(60);
            } else {
                System.out.println("기수를 잘못 입력하셨습니다.");
            }
    
        }
    
        private void printPassInformationByCutline(int cutLine) {//네이밍을 어떻게..? Cutline vs CutLine
            if (getAverage() >= cutLine) {
                System.out.println("합격입니다.");
            } else {
                System.out.println("불합격입니다.");
            }
        }
    
        private void printInformation() {
            printPassInformation();
            System.out.println("전체 과목 중 최고점은 " + getMaxScore() + "점입니다.");
            System.out.println("전체 과목 중 최저점은 " + getMinScore() + "점입니다.");
            System.out.println("전체 과목의 평균은 " + getAverage() + "점입니다.");
        }
    
        private boolean isPassedByScore100() { // 10줄 오바
            int score100Count = 0;
            if (getHtmlScore() == 100) {
                score100Count++;
            }
            if (getCssScore() == 100) {
                score100Count++;
            }
            if (getJavascriptScore() == 100) {
                score100Count++;
            }
            if (score100Count >= 2) {
                return true;
            } else {
                return false;
            }
        }
    
    }

    5회차 미션 : 

    https://github.com/kseysh/Java_Study

    궁금한 점

    1. JSCODE 학교의 시험 채점기 문제에서 어차피 하나의 클래스에서 사용하는 메서드라 private로 설정해도 오류는 없지만 그럼에도 불구하고 get함수를 private로 설정하여도 될지 궁금합니다. get함수를 잘못 이해해서 그런지는 모르겠지만 get함수는 public으로 설정해서 다른 클래스에서 사용할 수 있도록 하는 것이 좀 더 바람직하지 않은가 싶습니다!

    2. JSCODE 학교의 시험 채점기 문제에서 printPassInformationByCutline 함수가 너무 길어서 혹시 멘토님이라면 이 함수의 네이밍을 어떻게 하셨을지 궁금합니다 또한 cutline이라는 단어를 함수에 쓸 때 Cutline이 맞는지(cutline이라는 단어가 cut와 line의 따로따로 의미보다는 cut line이라는 같이 사용하였을 때 의미가 달라진다고 생각하기 때문입니다.) CutLine이 맞는지 궁금합니다.

    3. git에 대해 여러가지를 해보면서 소스트리를 이용하여 특정 커밋을 삭제하는 것을 하고 있는데 자꾸 충돌이 나서 못한다거나 뭔가 잘못 눌러 자꾸 브랜치가 생겨 조언을 받고 싶습니다.

    댓글