본문 바로가기

TIL

[TIL-2] 베어유 첫코딩 13~15강 (CHAPTER 4)

  1. 클래스 : 내가 만든 변수
    • 클래스는 여러 가지 고정된 구성품을 묶어주는 틀. 이 틀로 예시(인스턴스)들을 찍어낼 수 있다. 그 안에 구성품이 어떻게 정의되냐에 따라 각 예시들은 서로 달라진다.
    • 보통 헷갈리지 않기 위해 영문 코딩에서 클래스는 첫 글자를 대문자로, 인스턴스는 소문자로 쓴다.
    • 자바
      • class를 선언한 뒤 사용할 땐 다른 파일에서 한다.
      • class 참치선물세트{ \n int 일반; \n int 고추; \n int 야채 \n }
        • 참치선물세트라는 틀이 있고 그 안에 들어갈 수 있는 구성품은 일반, 고추, 야채가 있다.
      • 참치선물세트 참01호 = new 참치선물세트(); \n 참01호.일반 = 2; \n 참01호.고추 = 1; \n 참01호.야채 = 3;
        • 참치선물세트라는 틀을 찍어서 참01호라는 새로운 참치선물세트를 만든다. 참01호에는 일반이 2개, 고추가 1개, 야채가 3개 들어있다.
    • 파이썬
      • 파이썬에서 맨 첫칸부터 쓰면 메인 메서드. 앞에서 쓰던 거는 끝나고 새로운 게 시작되는 셈.
      • class 세면도구세트:
            칫솔 = 0
            치약 = 0
            비누 = 0
            
        세01호 = 세면도구세트()
        세01호.칫솔 = 2
        세01호.치약 = 3
        세01호.비누 = 6

        print("***세01호***")
        print("칫솔 : " + str(세01호.칫솔))
        print("치약 : " + str(세01호.치약))
        print("비누 : " + str(세01호.비누))
      • 세면도구세트라는 틀을 만든다. 이 안에는 칫솔, 치약, 비누라는 구성품이 있다. 각 구성품은 처음에 0으로 초기화해둔다. 세01호는 세면도구세트의 한 가지다. 세01호의 칫솔은 2개, 치약은 3개, 비누는 6개 들어있다. 세01호의 구성품 내용을 프린트한다.
  2. 생성자
    • 클래스 안의 구성품들을 한번에 정의할 수 있는 틀을 만들어주는 기능. 인스턴스를 만들기 편해진다.
    • 자바
      • 클래스를 만들어준 뒤, 중괄호 안에 메서드처럼 추가로 작성. 이름은 클래스 이름과 같고, return하는 값이 없다.
      • 생성자는 여러 개 만들 수 있다. 괄호 안의 입력값을 다르게 하면 다른 생성자로 인식된다.
      • class 세면도구세트{
        int 칫솔;
        int 치약;
        int 비누;
        int 샴푸;
        int 린스;

            세면도구세트(int a, int b, int c, int d, int e){
            칫솔 = a;
            치약 = b;
            비누 = c;
            샴푸 = d;
            린스 = e;
            }
        }
      • 세면도구세트라는 클래스는 칫솔, 치약, 비누, 샴푸, 린스로 구성된다. a, b, c, d, e라는 공간에 값을 받아서 칫솔, 치약, 비누, 샴푸, 린스에 대입하여 세면도구세트를 완성한다.
    • 파이썬
      • 생성자 이름을 자바처럼 클래스와 같게 하지 않고 __init__ 라고 쓴다.
      • class 세면도구세트:
            칫솔 = 0
            치약 = 0
            비누 = 0
            
            def __init__(self, A, B, C):
                self.칫솔 = A
                self.치약 = B
                self.비누 = C

        세01호 = 세면도구세트(2, 3, 5)
      • 세면도구세트라는 클래스에는 칫솔, 치약, 비누가 들어있다. 세면도구세트라는 틀로 예시를 찍어낼 때는 뒤 따르는 세 값에 해당하는 각 구성품이 들어간다.
  3. this
    • 생성자 안에서 적용할 값을 받아올 공간(그릇)에 구성품의 이름을 그대로 쓰고 싶은데 겹쳐서 인식할 수 없을 때 this를 쓰면 클래스 자체에 있는 변숫값을 호출하므로 구분할 수 있다.
    • 해석 : "우리의" 무엇무엇. 클래스 안의 메모리 변수.
    • 세면도구세트(int 칫솔, int 치약, int 비누, int 샴푸, int 린스){
              this.칫솔 = 칫솔;
              this.치약 = 치약;
              this.비누 = 비누;
              this.샴푸 = 샴푸;
              this.린스 = 린스;
          }
    • 파이썬에서 self를 쓰는 게 this의 역할을 한다. 그래서 값을 받아올 그릇의 이름에 그대로 구성품 이름을 써도 된다. "내 클래스 자체의" 무엇무엇.
  4. 클래스 안에 메서드
    • 클래스 안에 생성자까지 선언하고 그 아래에 메서드 선언.
    • 인스턴스를 만들고 "인스턴스명.메서드()"로 메서드를 호출하면, 해당 인스턴스에 대해 메서드를 사용할 수 있다.
    • void 출력하기(String 세트이름){
              코딩별.출력("**" + 세트이름 + "**");
              코딩별.출력("칫솔 : " + 칫솔);
              코딩별.출력("치약 : " + 치약);
              코딩별.출력("비누 : " + 비누);
              코딩별.출력("샴푸 : " + 샴푸);
              코딩별.출력("린스 : " + 린스);
          }
      • 저렇게 쓰면 세트이름은 어디서 알아서 가져왔는지 이해가 안 된다.
    • 세01호.출력하기("세면도구세트 01호");
      • 아! 메소드를 사용할 때 괄호 안에 쓰는 게 세트이름 그릇에 입력되는 거구나.
    • 파이썬
      • def 출력하기(self, 세트이름):
                print(세트이름)
                print("칫솔 : " + str(self.칫솔))
                print("치약 : " + str(self.치약))
                print("비누 : " + str(self.비누))
      • 왜 자바에서는 this를 안 쓰는데 파이썬에서는 self를 쓰는지 이해가 안 된다.

 


처음 배우는 사람인데 그때 그때 하나 배울 때마다 자바랑 파이썬을 둘 다 하려고 하니까 헷갈린다. 파이썬은 ;를 안 찍어줘도 되다보니 자바에서도 버릇이 잘 안 든다든가. 그래서 강의 방식이 좀 아쉽다. 처음엔 하나만 똑바로 하려고 해도 어려운데 말이다.

이틀 간 TIL을 블로그에 써보니 확실히 더 공부가 되는 것 같다. 시간은 오래 걸리지만 그냥 한 번 따라 해보고 끝나는 게 아니라 곱씹어 생각해볼 수 있고 글로 풀어쓰면서 더 명확하게 그려진다. 그리고 자연스럽게 복습된다.

'TIL' 카테고리의 다른 글

[TIL-6] 생활코딩 WEB1-19~부록(완강)  (0) 2021.09.14
[TIL-5] 생활코딩 WEB1-12~18  (0) 2021.09.13
[TIL-4] 생활코딩 WEB1-6~11  (0) 2021.09.12
[TIL-3] 생활코딩 WEB1-1~5  (0) 2021.09.12
[TIL-1] 베어유 첫코딩 1강~12강(CHAPTER 1~3)  (0) 2021.09.09