Week 1 of Object oriented programming
영어 시험을 치루는 동안의 공백기간을 넘기고 다시 컴퓨터공학 공부를 재개한다. 이번에는 객체지향언어 과목을 수강한다.
우선 초반에 인사영상과 소개영상 이후 바로 위와 같이 pre-course quiz가 등장하는데 굉장히 좋은 취지인 것 같다. 강의를 듣기 전 본인이 들어도 되는지 체크할 수 있기에.
그래서 Java를 다뤄보지 않음으로 체크한 1문항을 제외하고 다행히 모두 통과하였기에 해당 강좌를 수강하기로 했다.(사실 다뤄보긴 했지만 다루기만 했었기에...)
첫 강좌에서는 위와 같은 지도에 지진의 세기와 빈도 등을 나타낸 서비스를 보여주며 설명한다.
마우스를 갖다 대면 더 자세한 정보가 나오기도 하며
확대하여 해당 지역에 대해 더 자세히 들여다 볼 수도 있으며
특별한 sign까지 포함시킬 수 있는 이러한 서비스를 이 강좌를 통해 만들수 있게 될 것이라고 한다.
추가로 Google의 실무진들이 인사를 하고 추후 강좌에서 실무진들이 한마디씩 첨언을 하며 배운 것이 어떻게 쓰이는지 알려준다고 한다.
이 강좌를 마무리하면 class와 object에 대해 다룰 수 있게 되고 특히 Java에서 활용할 수 있다고 한다.
그리고 교수가 생각하는 Computer science의 정의를 한마디로 요약한다.
다음 강좌에서는 초반부에 퀴즈가 등장하여 풀어보았다.
Class와 Object의 정의에 대해 알려주고 있으며 class는 타입이고 object는 하나의 객체가 된다.
곧바로 class와 object에 관한 퀴즈가 등장하여 어렵지 않게 풀 수 있으며
이제 지도상의 위치 정보를 가지고 설명하게 된다.
SimpleLocation이라는 class를 정의하여 데이터타입으로 정의할 수 있다. 또한 클래스명과 java 파일명이 같아야 한다는 점을 알려준다.
Class 내에 존재하는 member variable인 latitude와 longitude를 설정하며 object에 내장할 정보가 된다.
이후 다시금 정의되는 것이 Method이며 인자를 받아 특정 명령을 수행한다.
그리고 상단의 내용만 제한한다면 이는 Constructor라고 하며 새로운 object를 생성하기 위한 method라고 할 수 있다.
그리하여 이 모든 것을 총괄하여 class 선언이라고 한다.
이 후 간단한 퀴즈
이번엔 LocationTester라는 class를 살펴본다.
위와 마찬가지로 lat, lon를 인자로 갖는 constructor가 있으며
이후 distance를 계산하는 내용이 있다.
위와 같이 ucsd.distance(lima)를 통해 거리계산 명령을 호출하게 되면
lima는 other로 연결이 되어 other.latitude, other.longitude로 자동 편입이 되고
ucsd는 this.latitude, this.longitude로 기준점이 된다.
그래서 uc san diego에서부터 lima까지의 거리를 계산했을 때 결과값이다.
이후의 간단한 퀴즈
다음 영상에서는 overloading에 관한 내용을 배웠다.
이전 영상에 이어 SimpleLocation을 예시로 들었다.
만약 Constructor가 인자를 갖지 않는다면
위와 같이 상수로 결정해놓을 수 있으며 Default constructor라고 한다.
이를 Overloading이라고 하며 밑에 동일하게 SimpleLocation method가 있지만 인자를 갖는 것을 확인할 수 있다.
Overloading 연습을 하는데 위와 같이 지도크기를 정하여 띄우는 method가 있다고 하면
위와 같이 map에 new UnfoldingMap에 다른 조건을 활용하여 새로운 object를 생성하고 실행하면
위처럼 기존의 800x600크기가 아닌 700x500크기의 지도가 생성된 것을 볼 수 있다.
참고적으로 UnfoldingMap method의 인자 설명이다.
그리고 overloading할 시 주의사항으로 리턴값은 같은 타입만 오버로딩이 가능하다. (위와 같이 double과 int타입을 동시에 오버로딩할 수 없음)
위와 같은 내용이다.
따라서 다른 리턴타입의 method는 삭제하여야 한다.
이에 관한 간단한 퀴즈를 마지막으로 영상을 마친다.
마지막 영상에서는 public vs private라는 주제로 진행한다. public은 어떤 클래스에서든 접근이 가능한 것을 의미한다.
위의 예시에서는 LocationTester라는 class에서 SimpleLocation object에 대해 쉽게 접근이 가능한 것을 보여준다. (lima.latitude)
마찬가지로 ucsd.distance(lima) 명령에서도 public이기에 쉽게 접근이 허용된다.
하지만 private는 오직 해당 class내에서만 접근이 허용된다.
그래서 위와 같이 같은 class내에서 접근이 가능한 것은 물론이지만
아까와 같이 다른 class인자에 대해 접근은 불허한다.
그리고 경험상 member variable은 private로 선언하는 것이 좋다고 한다.
혹은 public은 world use로 private은 helper method로 사용하도록 설계하기도 한다.
그렇다면 private의 정보는 영영 접근하지 못하나. 그렇지 않기에 getter와 setter에 대해 소개한다. 먼저 getter로 getLatitude라는 method를 정의하고
이전의 경우 바로 접근하려 한다면 위와 같이 에러이지만
getter인 getLatitude method를 통해서는 허용이 된다.
그렇다면 값을 바꾸는 방법은 setter를 이용하면 되겠다. setLatitude를 통해 값을 바꿔보자.
대신 위도의 경우 범위를 주고 유효한 값이라면 입력이 될 수 있는 구조로 말이다.
이후 간단한 퀴즈가 나오며 동일한 내용으로 쉽게 풀 수 있다.
Google에 다니는 프로그래머가 1분안되게 class와 object가 어떻게 사용된다고 설명한다.
그리고 마지막 Test
1번 문제는 새로운 instance를 생성할 때 new를 사용하는 것을 알면 된다.
MyClassTester method가 몇개의 object(instance)를 생성했는지 묻는데 위에서 new MyClass가 3번 나왔으므로 3.
MyClassTester 결과를 예측하는 것인데 c2와 c3가 같으므로 T.
Overloading이 가능한 method들을 선택하는 것인데 return값만 같으면 된다.
Private 인자를 getter없이 접근하려 하므로 Compile error가 발생한다.
영어 시험을 치루는 동안의 공백기간을 넘기고 다시 컴퓨터공학 공부를 재개한다. 이번에는 객체지향언어 과목을 수강한다.
우선 초반에 인사영상과 소개영상 이후 바로 위와 같이 pre-course quiz가 등장하는데 굉장히 좋은 취지인 것 같다. 강의를 듣기 전 본인이 들어도 되는지 체크할 수 있기에.
그래서 Java를 다뤄보지 않음으로 체크한 1문항을 제외하고 다행히 모두 통과하였기에 해당 강좌를 수강하기로 했다.(사실 다뤄보긴 했지만 다루기만 했었기에...)
첫 강좌에서는 위와 같은 지도에 지진의 세기와 빈도 등을 나타낸 서비스를 보여주며 설명한다.
마우스를 갖다 대면 더 자세한 정보가 나오기도 하며
확대하여 해당 지역에 대해 더 자세히 들여다 볼 수도 있으며
특별한 sign까지 포함시킬 수 있는 이러한 서비스를 이 강좌를 통해 만들수 있게 될 것이라고 한다.
추가로 Google의 실무진들이 인사를 하고 추후 강좌에서 실무진들이 한마디씩 첨언을 하며 배운 것이 어떻게 쓰이는지 알려준다고 한다.
이 강좌를 마무리하면 class와 object에 대해 다룰 수 있게 되고 특히 Java에서 활용할 수 있다고 한다.
그리고 교수가 생각하는 Computer science의 정의를 한마디로 요약한다.
다음 강좌에서는 초반부에 퀴즈가 등장하여 풀어보았다.
Class와 Object의 정의에 대해 알려주고 있으며 class는 타입이고 object는 하나의 객체가 된다.
곧바로 class와 object에 관한 퀴즈가 등장하여 어렵지 않게 풀 수 있으며
이제 지도상의 위치 정보를 가지고 설명하게 된다.
SimpleLocation이라는 class를 정의하여 데이터타입으로 정의할 수 있다. 또한 클래스명과 java 파일명이 같아야 한다는 점을 알려준다.
Class 내에 존재하는 member variable인 latitude와 longitude를 설정하며 object에 내장할 정보가 된다.
이후 다시금 정의되는 것이 Method이며 인자를 받아 특정 명령을 수행한다.
그리고 상단의 내용만 제한한다면 이는 Constructor라고 하며 새로운 object를 생성하기 위한 method라고 할 수 있다.
그리하여 이 모든 것을 총괄하여 class 선언이라고 한다.
이 후 간단한 퀴즈
이번엔 LocationTester라는 class를 살펴본다.
위와 마찬가지로 lat, lon를 인자로 갖는 constructor가 있으며
이후 distance를 계산하는 내용이 있다.
위와 같이 ucsd.distance(lima)를 통해 거리계산 명령을 호출하게 되면
lima는 other로 연결이 되어 other.latitude, other.longitude로 자동 편입이 되고
ucsd는 this.latitude, this.longitude로 기준점이 된다.
그래서 uc san diego에서부터 lima까지의 거리를 계산했을 때 결과값이다.
이후의 간단한 퀴즈
다음 영상에서는 overloading에 관한 내용을 배웠다.
이전 영상에 이어 SimpleLocation을 예시로 들었다.
만약 Constructor가 인자를 갖지 않는다면
위와 같이 상수로 결정해놓을 수 있으며 Default constructor라고 한다.
이를 Overloading이라고 하며 밑에 동일하게 SimpleLocation method가 있지만 인자를 갖는 것을 확인할 수 있다.
Overloading 연습을 하는데 위와 같이 지도크기를 정하여 띄우는 method가 있다고 하면
위와 같이 map에 new UnfoldingMap에 다른 조건을 활용하여 새로운 object를 생성하고 실행하면
위처럼 기존의 800x600크기가 아닌 700x500크기의 지도가 생성된 것을 볼 수 있다.
참고적으로 UnfoldingMap method의 인자 설명이다.
그리고 overloading할 시 주의사항으로 리턴값은 같은 타입만 오버로딩이 가능하다. (위와 같이 double과 int타입을 동시에 오버로딩할 수 없음)
위와 같은 내용이다.
따라서 다른 리턴타입의 method는 삭제하여야 한다.
이에 관한 간단한 퀴즈를 마지막으로 영상을 마친다.
마지막 영상에서는 public vs private라는 주제로 진행한다. public은 어떤 클래스에서든 접근이 가능한 것을 의미한다.
위의 예시에서는 LocationTester라는 class에서 SimpleLocation object에 대해 쉽게 접근이 가능한 것을 보여준다. (lima.latitude)
마찬가지로 ucsd.distance(lima) 명령에서도 public이기에 쉽게 접근이 허용된다.
하지만 private는 오직 해당 class내에서만 접근이 허용된다.
그래서 위와 같이 같은 class내에서 접근이 가능한 것은 물론이지만
아까와 같이 다른 class인자에 대해 접근은 불허한다.
그리고 경험상 member variable은 private로 선언하는 것이 좋다고 한다.
혹은 public은 world use로 private은 helper method로 사용하도록 설계하기도 한다.
그렇다면 private의 정보는 영영 접근하지 못하나. 그렇지 않기에 getter와 setter에 대해 소개한다. 먼저 getter로 getLatitude라는 method를 정의하고
이전의 경우 바로 접근하려 한다면 위와 같이 에러이지만
getter인 getLatitude method를 통해서는 허용이 된다.
그렇다면 값을 바꾸는 방법은 setter를 이용하면 되겠다. setLatitude를 통해 값을 바꿔보자.
대신 위도의 경우 범위를 주고 유효한 값이라면 입력이 될 수 있는 구조로 말이다.
이후 간단한 퀴즈가 나오며 동일한 내용으로 쉽게 풀 수 있다.
Google에 다니는 프로그래머가 1분안되게 class와 object가 어떻게 사용된다고 설명한다.
그리고 마지막 Test
1번 문제는 새로운 instance를 생성할 때 new를 사용하는 것을 알면 된다.
MyClassTester method가 몇개의 object(instance)를 생성했는지 묻는데 위에서 new MyClass가 3번 나왔으므로 3.
MyClassTester 결과를 예측하는 것인데 c2와 c3가 같으므로 T.
Overloading이 가능한 method들을 선택하는 것인데 return값만 같으면 된다.
Private 인자를 getter없이 접근하려 하므로 Compile error가 발생한다.
댓글
댓글 쓰기