[JAVA 백엔드 스터디] 5회차

minhyeok·2023년 2월 16일
0
post-thumbnail

학습내용

  • 깃 / 깃허브
  • 상속
  • 오버라이딩 / 오버로딩
  • 접근자
  • 캡슐화

이번에 배운 내용중 몰랐던 내용은 오버라이딩 이였다. 부모 클래스로부터 상속받은 메서드를 재정의하는 것을 말한다.
쉽게 말해서 오버로딩은 인자(매개 변수 타입,개수 순서)를 다르게 받을때의 메서드를 재정의 하고,
오버라이딩은 인자가 모두 같고 자식 메소드가 더 우선시 된다.
자바의 기본적인 코딩컨벤션을 확인하고 코드를 작성하였다.

  • 클래스의 이름은 대문자로 시작한다.
    • [O] public class Car { … }
    • [X.] public class car { … }
  • 메서드나 상태(필드, 멤버 변수)의 이름은 소문자로 시작한다.
    • [O] private String name;
    • [X.] private String Name;
    • [O] public void speedUp() { … }
    • [X.] public void SpeedUp() { … }

예제 풀이

Ex1) 공학용 계산기

  • 계산기(Calculator), 공학용 계산기(ScientificCalculator) 클래스를 만들어라.
    (Main의 파일에 작성하지 말고, 별도의 파일을 만들어라.)
  • 상속을 활용해서 구현해라.

Ex1 코드
깃허브 링크1

상속을 활용해 코드를 구현하였다.

Ex2) 고양이 인형 만들기

  • 고양이(Cat) 클래스, 화난 고양이(AngryCat) 클래스를 만들어라.
  • 상속메서드 오버라이딩을 활용해서 구현해라.

Ex2 코드
깃허브 링크2

상속과 메서드 오버라이딩을 이용해 코드를 구현하였다.

Ex3) JSCODE 학교의 시험 채점기

  • ArrayList를 사용하지 마라.
  • 삼항 연산자를 쓰지 마라.
  • JSCODE 1~3기가 시험을 봤다. 1, 2기는 평균 점수가 60점 이상이어야 합격이다. 3기는 평균 점수가 70점 이상이어야 합격이다. 다만, 100점 과목이 2개 이상일 경우 평균 점수와 상관없이 합격이다.
    • 합격일 경우 합격입니다.라는 문구를 출력해야 한다.
    • 불합격일 경우 불합격입니다.라는 문구를 출력해야 한다.
  • 아래의 코드를 실행시켰을 때 정상 작동되게 만들어라. Main.java
    package ch5.practice.jscodeexam;
    
    public class Main {
    
      public static void main(String[] args) {
        ExamProgram examProgram = new ExamProgram();
        examProgram.execute();
      }
    }
  • 하나의 메서드 내부 로직의 길이는 10줄 이하여야 한다.
  • 풀이 과정
    먼저 진행했던 예제 코드를 기반으로 시작하였다.
    ExamProgram / Score / Main 클래스 세개로 분리하였다.
    Main 클래스에서는 ExamProgram 객체를 생성하고, execute 함수만 실행하도록 하였다.
    ExamProgram 클래스에서는 Score 객체를 생성하고, 9개의 함수를 실행하였다.
    Score 클래스에서는 각각의 변수를 선언하고, 그에 해당하는 값을 입력받는 함수를 생성하였다.
    해당하는 값들을 입력받고, 평균을 계산하는 함수를 통해 평균을 계산한다.
    그 뒤 합/불 결과를 나타내는 함수를 통해 결과르 나타낸다. 여기서 메서드 길이를 줄이기 위해 멘토님의 도움을 받아 리팩토링 메소드 정리 기법을 알게 되어, 좀 더 축약하여 메서드를 보기 좋게 정리할 수 있었다.(printResult 함수에서 조건에 맞게 printDetails1/2 함수를 호출하도록 하였다.)
    그 뒤, 삼항연산자를 쓰지 않고 최고/최저점을 출력하기 위해 if 문을 이용해 함수를 구현하였다.
    또한 문제해결을 하다가 함수 이름을 getter/setter 함수에 맞춰 이름을 수정하였다.

Ex3 코드
깃허브 링크3


멘토님의 참고 링크 : 리팩토링 메소드정리 기법

5회차 미션

Ex3 문제를 Git 을 이용해 Git-Hub에 올려보았다.
깃허브 링크3


깃허브에 코드 파일이 제대로 업로드 되었다.
이번 미션을 통해 Git / GitHub 이용 방법에 좀 더 친숙해지게 되었다.

5회차 심화미션

Git-Flow

👨‍🏫 스타트업부터 대기업까지 정말 많은 기업에서 Git-Flow를 사용하고 있다. 당연히 Git-Flow 전략 대신에 다른 브랜치 전략을 사용하기도 한다. 하지만 가장 기본이 되는 Git-Flow를 익히게 된다면, 다른 브랜치 전략도 쉽게 활용할 수 있게 된다. 따라서 Git-Flow 전략부터 공부해보자.

git 브랜치 전략에 대해서

Git Branch 전략에는 여러 종류가 있다. 그 중 Git-Flow 전략에 대해 익혀보자.
처음부터 Git-Flow에서 제시하는 master, develop, feature, release, hotfix 브랜치를 전부 사용해보려고 하면 복잡하고 막막하다. 그러니 master, develop, feature 브랜치만 사용하는 걸 목표로 잡고 시도해보자.
작은 프로젝트를 혼자 만들어서 Git-Flow를 직접 경험해보고, 어떻게 사용해야 하는 지 방법을 정리해놓자.

아직 Git이 완전히 익숙하지는 않아서, 좀 더 공부해볼 미션이다.
git-flow github flow gitlab-flow trunk-based 에 관해 검색을 하고 추후 내용을 보강하도록 하겠다.

정리

  • 배운 내용, 깨달은 점
    오버라이딩에 대해 알게되었다. 오버로딩은 알고 있던 개념이였지만, 오버라이딩은 상속을 통해 자식의 메서드가 더 우선시 된다는 것을 알게 되고 사용법을 익히게 되었다.
    또한, 클래스와 인스턴스에 대해 좀 더 명확히 알게 되는 미션이 되었고, 코딩 컨벤션을 통해 클래스 이름이나 메서드의 이름에서 주의해야할 부분을 알게 되었다.
    또한 , 함수 이름을 설정할때 get/set 을 통해 함수 이름을 설정하여 , getter/setter 함수라는 개념을 알게 되었다.

  • 어려웠던 점, 반성하고 싶은 점 / 개선할 방법
    Ex3 번에서, 기수/점수 등을 입력받는 부분을 구현하는 것과, 메서드의 길이를 10줄 이내로 해결하는 부분이 애를 먹었던 부분이다. 처음에는 public static void main 안에서 Scanner 를 써야하는 줄 알고, main 함수에서 입력을 받아서 인자로 전달해야하나? 하고 접근하는 것이 시간이 걸렸다.
    그러다가 그냥 getGeneration 과 같은 값을 입력받는 함수마다 Scanner 객체를 생성해서 입력받아보자! 했는데 다행히 제대로 구현이 되어 문제를 해결하게 되었다.
    또한 메서드의 길이를 10줄 이내로 해야하는 조건 때문에 고민을 하였는데, 다행히 execute 함수에서 10줄 이내로 구현하라고 조건이 변경되어 printResult 에서 기수만 조건으로 받고, 그 기수에 해당하는 결과는 printDetails1/2 로 따로 작성하여 해당 함수를 호출하는 방식으로 해결하였다.

  • 궁금한 점
    이번에는 멘토님의 도움을 받아 모두 문제없이 구현하게 되어 질문할 점이 따로 없습니다! 감사합니다 ㅎㅎ
    그런데 6회차에서는 미리 학습해올 내용이 없을까요?

1개의 댓글

comment-user-thumbnail
2023년 2월 20일

안녕하세요 민혁님! 미션 수행해주시느라 고생 많으셨습니다:)

수행해주신 미션에서 피드백 하나 드릴게요~! 5회차 쪽집게 과외의 '접근 제어자' 부분을 학습하셔서, 'JSCODE 학교의 시험 채점기' 미션에 접근 제어자를 적용시켜서 코드를 수정해보시면 좋을 것 같습니다~~

그리고 이번 6회차에서는 미리 학습해올 내용은 따로 없습니다ㅎㅎㅎ 이번 6회차는 마음 편하게 오시면 될 것 같아요~!

답글 달기