내일배움캠프#10

김한준 Hanjun Kim·2023년 10월 23일
0

내일배움캠프

목록 보기
10/70

개인프로젝트 제출 마지막 날!

우선, 깃허브 링크를 남겨놓아야겠다 (https://github.com/wkdehf217/Java_Kiosk)

키오스크 기능 구현은 다했지만

계속 고민해봤던 클래스 / 인터페이스 활용은 못했다.

생성자에 initialize 메서드 만들고 호출해서 하는부분 왜 생각 자체를 못했지?

static으로 공유한다음에 간단하게 만들면 되는건데..

또, initialize 부분은 private으로, 생성자는 public으로 만들면 좋았을 것 같다.

또 궁금한거! 왜 메인에서 다 구현 안하고 클래스에 따로 빼서 하는건지?

물론 메인에서 다 구현하면 안좋은것은 맞지만, 자연스럽게 코드 구조 자체를 그런방식으로 만들어 나가는게 아직 적응이 안됐다.

근데 해설영상을 보니 super(name, explanation); 이거 썼네? 쓰는게 좋구나 다행이다!

메소드는 10줄 이하 메소드가 좋다

메소드 안에서 메소드를 호출하게끔 하거나 해서 이 메소드가 뭐하는지 명시하는게 좋다.

재귀호출을 써보자.

메인메뉴로 다시 돌아가는거 return을 써도 됬지만, 재귀호출을 알고있었다면 써볼만 하다.

이왕이면 래퍼 클래스를 쓰자

...

자바의정석 책도 샀으니 클래스 관련 부분 다시 한번 공부 하려고 한다.

그 부분 말고 기능쪽은 버그도 다 잡았고, 예외처리도 해놔서 어느정도는 만족한다.

이제 해설 영상 보다가 하루를 마무리 하고, 내일부터 팀 과제도 시작이니 잘 해보려고 한다.

추가로 static 관련 공부하다가 인터넷에서 좋은 예시가 있길래 메모 해 보았다.


스태틱의 특징은 '공유' 개념과 메모리의 이점

메모리의 이점

예를들어서 클래스 안에 aa라는 변수가 있다고 하자.
그러면 그 클래스를 2번 만들면, 각자 aa가 하나씩 총 2개의 메모리가 잡히겠지?
근데 static을 쓰면 같은 곳의 메모리 주소를 가리키기 때문에, 메모리 할당을 한 번만 하기 때문에 메모리상 이득이다

공유

예를 들어서 한 클래스 안의 생성자 안에서 count라는 변수가 있고, count++ 하는 코드가 있다.
그러면 객체가 2번 생성되면 count는 객체1에서 1, 객체2에서도 1이겠지?
하지만 static을 쓰게 되면 '공유'가 되기 때문에
객체가 2번 생성되고 난 후 count는 2가 된다.

class Counter  {
    int count2 = 0;
    static int count = 0;
    Counter() {
        count++;
        System.out.println(count);
    }

    public static int getCount() {
        // return count2; 불가능한호출
        // 왜? static 변수는 먼저 메모리에 잡히기 때문에, 자기보다 나중에 생성되는 변수나 메소드는 모른다
        // 그래서 변수인 static count는 알지만, 멤버변수인 count2는 static 메소드인 getCount가 모를수밖에
        return count;
    }

    public static int getCount2(int cnt) {
        return cnt+1;
    }

}
public class Main {
    public static void main(String[] args) {
        Counter c1 = new Counter();
        Counter c2 = new Counter();

        System.out.println(Counter.getCount()); // static 메소드는 객체 생성없이 클래스 이용하여 호출
        System.out.println(Counter.getCount2(1));
        System.out.println(Counter.getCount2(2));
    }
}
profile
개발이 하고싶은 개발지망생

0개의 댓글