본문 바로가기

코딩 학원(국비지원)

14일차 코딩 수업

반응형

구글의 알파고 출시 이후부터 A.I.가 이슈가 됐음. 강력한 경쟁상대로 CHATGPT가 나왔음. 회원수가 급격하게 늘고 있으며 유료 수익 모델도 나왔다. 앞으로 인류는 큰 변화를 겪게 될 수도 있다. 

 

자바 상속. 

세터 게터는 뭐지? 일단 따라해본다. 따라가기 실패. this, super, 세터 게터 등등 뭔 소리인지 따라가기 힘들다. 오버라이딩은 뭐지...? 각종 개념이 짬뽕돼서 뭔 소리를 하는지 도저히 알 수 없다. 

 

상속을 아려면 객체지향을 알아야 하고 객체지향을 알려면 다음을 알아야 한다. 

  • 자바의 설치 - o 
  • 자바의 실행 - o
  • 프로그래밍이란 무엇인가? - o
  • 변수 - o
  • 주요 데이터 타입 - o 
  • 메소드 - ?

메소드는 클래스 내의 함수를 말한다. 직접만들어 사용하지는 않았지만 main 이라는 메소드를 사용해왔다는 사실. 

 

짜증이 난다. 못따라가고 있다. 생성자호출?????????????????????????????????? 

면접관 : 상속이란 무엇인지 설명해보시오. 왜 상속이 필요하죠?

 

- 이해할 수 없는 언어를 사용하는 강사. 컴퓨터와만 소통을 잘하는 것 같다. 이제 선생이라 부르지 않기로 했음. - 

 

다시 처음으로 돌아가본다. 프로그래밍이란 무엇인가??? 이제부터 사용자가 아니라 생산자가 되기 위해 공부하는 것임.

 

프로그래머는 코드만 작성하면 된다. 설계도를 만드는 행위임. 소프트웨어는 설계도를 만드는 것이다. 설계도는 컴퓨터와 소통하기 위해서 필요하다. 컴퓨터가 알아 들을 수 있는 언어를 써야한다. 다양한 (1000가지 이상) 언어가 있어요. 

 

중급자는 도구를 잘 사용해서 원인을 파악함. 초심자는 도구를 쓸 줄 모른다. 

디버거를 사용하면 순서대로 원하는대로 절차를 확인할 수 있다. 원인과 결과를 한눈에 볼 수 있음. 

 

<입력과 출력>  

컴파일이 무엇인가? 컴파일을 하라는데...

직접 컴파일하기. Compile. Run. Input 

 

 

이제는 다형성이라는 개념이 나왔다. 뭘까?

 

package kr.co.ezenac.polymorphism;

import java.util.ArrayList;

class Animal {

 

public void move() {

System.out.println("동물이 움직입니다.");

}

 

public void eat() {

System.out.println("동물이 먹습니다.");

}

}

class Dog extends Animal {

@Override

public void move() {

System.out.println("개가 네발로 걷습니다.");

}

 

public void playBall() {

System.out.println("개가 견주가 던진 공을 물어옵니다.");

}

}

class Tiger extends Animal {

@Override

public void move() {

System.out.println("호랑이가 네 발로 뜁니다.");

}

public void hunt() {

System.out.println("호랑이가 사냥을 합니다.");

}

}

 

class Eagle extends Animal {

@Override

public void move() {

System.out.println("독수리가 하늘을 날아갑니다.");

}

 

public void pickup() {

System.out.println("독수리가 물고기를 채갑니다.");

}

}

 

public class AnimalTest {

 

public void moveAnimal(Animal animal) {

animal.move();

}

 

public static void main(String[] args) {

Animal danimal = new Dog();

Animal tanimal = new Tiger();

Animal eanimal = new Eagle();

 

AnimalTest test = new AnimalTest();

test.moveAnimal(eanimal);

test.moveAnimal(tanimal);

test.moveAnimal(eanimal);

 

System.out.println();

 

ArrayList<Animal> animalList = new ArrayList<>();

animalList.add(danimal);

animalList.add(tanimal);

animalList.add(eanimal);

 

for(Animal animal : animalList) {

animal.move();

}

 

}

}

 

 

솔직히 지금은 내가 아무 것도 못하지만 결국엔 다 하게 될 거야. 아직 잘 몰라서 그런 거지 곧 알게 될 것이다.

 

Override?

내가 지금 모르는 개념은 객체지향과 상속이다. 이것을 이해하지 못하고 무작정 코딩을 따라 쓰는 것은 무의미하다. 하나도 모르겠다. 

 

여기까지가 OOP 핵심 개념이란다. 내일은 추상클래스, 인터페이스를 공부한다. 

 

________________________________________________________________________________________________

 

오후 1시간은 파이썬 수업을 한다. 

 

파이썬은 생각보다 쉬운 느낌이다. 뭐 처음엔 다 그렇지만... 그림이 추가되니까 쉬운 느낌. 

반응형