4/13 - 4/20

목표: 2. 객체지향 프로그래밍 - 챕터 01 ~ 16

 

이번주 자바교육 소감

저번주는 기본적인 것들을 다뤄서 진도가 쑥쑥 나갔다. 조금 지루한 느낌도 들었다.

속도는 1.5배로 해놓고 휘리릭한 느낌이었다. 

그런데 이번주 객체지향을 들어가면서 갑자기 너무 어려워 진 것이 아닌가?

자바교육을 다른곳에서 들었을때 내가 왜 자바를 어려워 했었는지 이제야 기억이 났다. 

아직 10프로 정도밖에 안했는데... 

자바교육 강의를 들을때마다 잊고 또 하고 잊고 또하고. 앞으로 이렇게 되면 어떻하지?

그래도 아직 이해를 못하고 넘어간건 없으니까 앞으로의 자바교육 열심히 들어보자!

내 자신을 뽀개자! 

 

  • Switch문의 새로운 스타일

Switch 자바버전이 되면서 간편한 스타일이 나왔다.

JAVA 인터넷강의 중

위의 코드가 우리에게 익숙한 스위치문이라면 아래는 JavaSE-14 부터 적용 가능한 코드       

더 간단해 졌지만 나에게는 공부할 게 늘어 그닥 달갑지만은 않다.

case 반복적으로  필요없이 , 나누고 yield 리턴.


                                                  

그런데 해봤는데 안된다. 문제는 java버전 설정을 잘못함.

위에 버전은 [jdk-15.0.2]

그래서 다시 새폴더'chapter2' 생성하고 설정란에 [JavaSE-14] 선택만하면 . 이제 제대로 된다.

 

 

 

Sum 에서 오류가 나는 이유.

sum 지역변수. 자동으로 초기화 안됨.

그래서 int sum = 0; 이라고 초기화 해야함.

 

패키지 이름은 소문자

클라스 이름은 대문자로 시작 추천.

Int string 변수/메서드 이름은 camel notation 추천/ convention.

 

Java 파일 하나에 Public class 하나, class 여러 가능. 이름은 public class 동일.

패키지 이름 바꾸기 - F2

 

함수 = 어디에 소속x

메서드 = 클라스 안에 소속. C++에서는 멤버function(멤버함수)이라고도 . getStudentName()

클래스

참조변수 = 클래스를 참조하는 변수. Class Student이면 Student studentLee = new Student();

인스턴스 = 참조변수로 만들어진 . studnetLee 인스턴스. 힙메모리에 저장.

지역변수 = 스택메모리에 저장, 자동으로 초기화 되지 않음. int i=0; 초기화 필요.

멤버변수 = 객체가 만들어 자동초기화됨. Public int grade; 자동으로 0 초기화. 이클립스에서는 멤버변수를 기본적으로 파란색으로 표시.

 

studentNumber = studentNumber; 에서 왼쪽애는 가장 가까운 변수를 찾으려는 속성이 있다.

결국 자기 자신이 제일 가까우므로 스스로 복사하는 (넘어온 매개변수가 매개변수에다 값을 대입하는 꼴임). 그래서 this.(멤버변수를 가르킴) 필요 -> 왼쪽은 멤버변수 = 오른쪽은 매개변수

 

This. 붙여주면 this.studentNumber 오른쪽의 studentNumber 같지 않게됨.

 

서비스 모듈: 서비스를 제공해 주는 모듈(서버). 기본생성자가 있는 클라스.

클라이언트 모듈: 서비스를 사용하는 모듈. 객체를 생성하는 클라스. 오브젝트를 가져다주는 코드

 

오버로딩(overloading)

  • 메서드 이름은 같고, 매개변수만 다름.
  • 사용자의 편의성을 위해. 어떤 생성자(constructor) 매개변수 3 모두 필요. 어떤 생성자는 1개만 필요. 모든걸 제공해 주면 이걸 사용하는 클라이언트 코드는 골라서 수가 있다. Jdk에서 제공되는 여러가지 클래스들 보면 이런것들을 제공해주는 클래스들을 있음. 
  • Default constructor 같은 경우 제공되어 문제가 생길 , 제공안 하는것이 맞음.
  • 생성자를 하나도 만들지 않으면 default constructor 항상 제공이 된다.

JAVA 인터넷강의 중 - 필기는 내것.

 

클라스: 오브젝트의 블루프린트. 추상화/제너럴한 이름으로.

 

 

  • 참조 자료형 변수

변수의 자료형- 기본자료형(primitive data type)

참조자료형(오브젝트형의 객체타입 data type) - String(예외적.변수생성필요x. new라는 키워드 없이 바로 사용 가능), Date, Student …

참조자료형 - 변수 선언 그냥 쓸수 없다. 객체이므로. 생성해서 써야함.

JAVA 인터넷강의 중

이제부터 고비다. 술술 넘어가던 진도가 막히기 시작했다. 6분짜리 영상 이해하는데 30 넘게 걸린다..

 

JAVA 인터넷강의 중
JAVA 인터넷강의 중
JAVA 인터넷강의 중

 

  • 접근제어 지시자(access modifier) 정보은닉(information hiding)

Access modifier

JAVA 인터넷강의 중

 

 

프로그램의 포인트는

 

변수들은 private이어서 다른 클라스에서 접근불가. main에서 데이터 수정 불가.

접근은 get/set 메소드를 통해서만 가능(why? Public으로 정의되어 있으므로)

 

캡슐화 (encapsulation)

  • Private/protected 이용.
  • 외부에서 사용할 메서드 1-2개만 오픈해서 사용/나머지는 자동으로 생성되서 사용될 있도록
  • 대부분 멤버 변수/메서드 private -> 클라이언트가 사용하기 쉽게/사용API 한정적/객체작동이 일관성있다.

디버깅/기능추가에 유연.

 

사용자가 public으로 프로그램 제어가 가능한 전화번호부를 순서대로 쓰거나 위에 라인 각을 맞추는 들은 불필요하므로 private으로 놓는 것이 편리.

 

StringBuffer/StringBuilder

StringBuffer buffer = new StringBuffer(); //스트링클래스를 이어 붙일 있지만 메모리 오버헤드가 . 내부적으로 늘어날수 있는 버퍼를 가지고 있는 클래스에 스트링을 연결하고 나중에 스트링값으로 리턴하는 방법.

 

객체 자신을 가리키는 this

  •  객체를 new하면 heap 메모리에 객체가 생성 <- 주소값 갖는 애를 참조변수라 . = 참조값(reference value)
  • 변수는 외부에 위치해서 인스턴스 값을 가르키게 .
  • 인스턴스 내부에서 자기 자신의 주소값을 갖는 것이 this.
  • 생성자: 원한다고 아무때나 호출할 있는 메서드와 다르다. 객체가 생성될 때만 호출이 .(new 사용할 )
  • 생성자 안에서 다른 생성자를 호출할 (상속: 하위클래스에서 상위클래스 생성자 호출)
  • 여러개의 클래스중에 하나의 클래스에서 다른 클래스 호출시 this사용.
  • 자신의 주소(참조값) 반환할 this사용.
  •  생성자 역할: instance 초기화.

 

JAVA 인터넷강의 중 - 필기는 내 것

 

휴... 어렵긴 했지만 그래도 새로운 것을 이해하고 배우는게 나름 보람이 있었다.

자바교육 설명을 들을땐 이해가 잘 되는데 막상 코드를 짜 보려고 하면 무념무상이 된다.

코딩 잘 하는 사람들이 너무 대단하게 느껴진다.

 

 

 

자바/스프링 자바인터넷 강의 링크

http://abit.ly/java-spring

+ Recent posts