티스토리 뷰

JadeStone의 깃허브 링크:

https://github.com/BigJadeStone  ( 여기에 제가 수업 때 작성했던 자료들 있으니 참고하세요!  이클립스 기반 파일입니다.)

-강의가 끝나고 올리는 당일날 자바 파일엔 이전 수업 때 작성했던 모든 파일들이 누적되어 저장되어 있습니다.

-금일 학원에서 자바 수업 때 배울 모든 내용들에 대한 교안을 알집파일로 올려놓았습니다. (자바교안 파일 올렸음.)

졸리고 지칠 때 나에게 생기를 불어넣어주는 이클립스.

 

<어제 수업의 복습>
- 메서드 = 함수
- 메서드 작명의 규칙. 단어가 2개이상일 경우. 소문자로 시작해서 뒤에 붙은 단어의 첫 글자는 대문자로 써줘야한다.
- 첫 수업에도 말씀하셨지만 언어 하나를 잘 하는게 중요.
  수업만 듣고 가는 사람이랑 스스로 시간을 들여서 문제를 많이 풀어보고 정리하고 배운걸 복습해보는 사람하고는 시간이 갈수록 차이가 정말 남.
  이건 그동안 선생님이 쌓아온 데이터로인한 사실.


<오늘 수업 내용>
 -8강 메서드-
참고 클래스 :  MethodEx04, Quiz23, MethodEx05
#배열을 매개변수로 받는 메서드 
참고 클래스 : MethodEx04
-모양 : void method02(int[] a, String[] arr2) {}

#배열을 반환하는 메서드
참고 클래스 : MethodEx04
-모양 : int[] method03() {}  배열을 반환 하려면 이렇게 반환타입에 []를 붙여주면 됨.
-예시 : 
int[] method03() {
int[] arr = new int[5];
arr[0]=0;
arr[1]=1;
arr[2]=2;
arr[3]=3;
arr[4]=4;

return arr;
}
이렇게 리턴 값에는 변수 이름을 지정해주면됨.

-메서드의 (동기적)실행 - 동기적 ? 순서대로 실행한다고 생각하면 된다.
-메서드의 재귀적 실행 - 나 자신을 계속 실행시켜줌.
         재귀적 함수는 탈출의 구문을 반드시 명시해줘야 한다.
  복잡한 규칙성을 만들어낼 때는 좋다.
  재귀적 함수를 처음에 사용할 때는 과정을 다 써봐야됨 안그러면 헷갈림.
  좋은 효율을 나타내는 모형은 아님. 같은 메서드를 여러번 복사해서 실행하기 때문.
  우리는 구경만 하고 가는것.
예시:
static void recursive(int a) {
//재귀적 함수는 탈출의 구문을 반드시 명시해줘야 한다.
if(a == 10) return;
System.out.println(a + "번 호출");
a++; //1증가
recursive(a);
}
 -자바교안 9강 객체와 클래스-
 참고 클래스 : ObjectBasic01, Calculator, ObjectBasic02, Pen, PenMain
Variable, VariableMain, Phone, PhoneMain
-8강 까지는 모든 언어가 갖고 있는 특징.
-9강부터는 다른 언어에는 없는 특징들, 자바와 비슷한 언어에서만 나타나는 특징들이 나타남.
 9강부터는 매시간에 바로 이해하지 못하면 끝임.
 
 자바는 공장이다
 왜 우리가 클래스를 사용하는가?
- 공장에서 물건을 생산할 때 대량생산을 하기 위해 틀을 만들고 사용한다.
- 클래스는 이 대량생산을 위한 틀인 것이다
 
-객체(한국말로) = 오브젝트(영어로) = 컴퓨터 안에서는 인스턴스(생성)
- 객체와 클래스에 관한 비유
붕어빵을 만드는 거푸집이 클래스. 거푸집에 넣는 여러가지 재료들은 변수와 메서드.
그렇게 맛있게 구워서 나온 붕어빵 하나하나가 바로 각각의 객체.
-main 클래스는 단순히 실행을 위한것. 위에 붕어빵 틀로 만들어낸 붕어빵 즉 객체를
 Main 클래스에 하나씩 하나씩 갖고와서 사용 할 수 있다. 단, 각 개체마다 이름을 달리해야한다.

-매개변수도 지역변수의 일종이다.
*객체생성 명령
ClassName instanceName = new Constructor();
여기서 Constructor(); 이거는 생성자다. 아래에서 다시 얘기할것.
예시)Person per1 = new Person();
Variable var = new Variable();
*클래스 안에는 뭐가 있는가?
멤버변수
-대량 생산틀의 속성을 나타냄
-클래스 안에서 선언 된 변수
-객체를 생성할 때 각 데이터 타입의 기본 값으로 자동 초기화
-기본 값 : 정수형 0, 실수형 0.0 , 논리형 false, 객체 null 
 멤버 변수는 선언과 동시에 이렇게 초기값이 자동설정됨.
메서드
-대량 생산틀의 기능을 나타냄
-메서드 안에서 선언된 변수는 지역변수(Local Variable) 이라고함.
- 지역변수(Local Variable)
메서드 안에서 선언된 변수.
매개변수도 지역변수의 일종이다.
사용하기 전에 반드시 초기화 해야함(초기값을 설정해줘야 한다는 말.)
*생성자(Constructor)
참고 클래스 : Phone , PhoneMain

- 생성자는 객체가 생성될 때 객체의 상태(멤버변수)를 초기화하는데 사용됩니다.
- 객체가 생성될 때 new 키워드 다음에 오는 것을 생성자 라고합니다.
- 생성자는 메서드와 모양이 비슷하게 생겼지만, 반환 타입을 적지 않고 클래스 이름과 대/소문자까지
  똑같이 만들어야 합니다.
- 생성자는 반드시 클래스 안에 하나 이상 선언해야 하며, 만일 생성자를 만들지 않을 경우 자바 가상
  머신(JVM: Java Virtual Machine)이 대신해서 기본 생성자를 자동으로 하나 만들어 줍니다.
- 기본 생성자는 매개 변수를 가지지 않는 기본 형태의 생성자 입니다.

- 생성자를 만드는 규칙
1. 생성자의 이름은 클래스 이름과 대/소문자까지 정확히 같아야 합니다. 만약 클래스 이름과 다른
   이름으로 만들면 메서드로 간주합니다.
2. 생성자는 메서드와는 달리 반환 유형을 적지 않습니다.
3. 생성자는 다른 유형으로 여러개 생성 가능합니다. 이런 것을 '생성자 오버로딩'이라고 일컫습니다.
   
-생성자를 만들 때 가장 많이 사용되는 유형은 2가지
1. Phone() 아무것도 없는 생성자.
2. Phone(String a, int b, String c) 이런 식으로 모든 멤버변수를 중개변수로 받는 유형.


<오늘 기억할 내용들>
- answer = (double)sum / numbers.length; 여기서 캐스팅 하는 법 주의. 
현재 인트형 값들로 계산 중인데. 결과값은 더블로 반환해야한다. 이 때 값을 나눠주는 과정에서 
미리 값을 더블형으로 형변환 해주지 않으면 소수부가 다 잘려나간 상태에서 그 값이 더블형으로 캐스팅 되기에
결과값에서 소수부 자리를 볼 수가 없다. 그래서
(double)(sum / numbers.length); 이렇게 캐스팅 하면 소수부가 나오지 않는다.
-내가 스스로 코드를 적어보지 않으면 이해가 안되고 배운것을 금방 잃어버린다. 그러니까 
 문제풀기하고 복습하고 꼭 공부하도록 해야한다!.
-향상된 for문은 배열의 값을 돌려주는 작업을 더 수월하게 할 수 있다.
for(int a : arr) {세부내용}
여기 ()안에 의미는 arr의 각 인덱스 순서별 값을 
int타입의 a변수에 넣어서 세부내용을 돌려준다는 의미이다.
-함수 즉 메서드는 아주 중요하기 때문에. 백준에는 함수 문제가 없으니
 프로그래머스에서 함수 문제를 꾸준히 많이 풀어보기. 
-oop 언어 (객체 지향 언어, 자바가 여기에 속함) 
Object Oriented Programming 의 약자.
프로그래밍 세계의 철학으로 사람이 이해하는 방법을 흉내한 방법론 입니다.
객체는 유기적으로 연결하여 프로그래밍을 합니다.
참고싸이트 https://velog.io/@gyu716625/OOP1 
-내가 문법이 익숙하지않아 어떻게 사용해야할지 잘 모르겠다 ?
 일단 써보기 쓰다보면 안되는게 나오면 아 이건 안되는거구나. 
 하다가 되면 오 ? 이게 되네 ? 하면서 이렇게 체감으로 되는 것과 안 되는 것을 익히게 된다고 센세께서 말씀해주심.
-생성자랑 메서드랑 개념과 모양을 잘 알아둬야한다. 헷갈리지 않도록 잘 구분해야한다.
 둘은 비슷하게 생겼으나 가장 큰 차이점은 생성자에는 반환타입을 안 쓴다는 것.


★ 자바는 타입을 정말 중요하게 여긴다고 선생님께서 말씀하심. 

    또 내가 프로그래머스 함수 문제 풀다보니 이 부분이 정말 중요하게 와닿음. 

    잘 기억해두자.

<오늘 수업 후 해야할 일>
-class 파일들을 패키지에 따라 정리하다가 수업 초반부에 풀었던 Quiz 클래스들 여럿을 삭제해버림.
 깃허브로 전에 올린 파일들로 클래스들 복구하기. ( 지워진 클래스 내용들 보고 별거 아니면 그냥 복구 안 해도됨.)
-백준 ,포로그래머스 문제 닥치는대로 풀기.

댓글