본문 바로가기
반응형

분류 전체보기256

Chap_07. 다형성 다형성 : 하나의 클래스나 함수가 다양한 방식으로 동작가능한것. 상속 시간에 기본 카메라(Camera), 화재감지카메라(FactoryCam), 속도감지카메라(SpeedCam)을 생성하였다. 그리고 각각 Camera 클래스를 부모클래스로, FactoryCam과 SpeedCam 클래스를 자식클래스로 설정하였다. 이는 곧 아래와 같이 IS - A 관계라고 할 수 있다. FactoryCam is a Camera : FactoryCam 은 Camera이다. SpeedCam is a Camera : SpeedCam 은 Camera이다. 하지만 반대로 " Camera는 FactoryCam이라고 할수 있는가? " 혹은 " Camera는 SpeedCam인가? " 라고 질문한다면 아니라고 할 수 있다. 아래 예를 통해 생.. 2023. 4. 28.
Chap_07. 메소드 오버라이딩 메소드 오버라이딩 : 자식클래스에서 부모 클래스의 메소드를 덮어쓰기(재정의)하는 것이다. 이전 시간에 학습한 상속을 이용하여 메소드오버라이딩을 이해해보자. 상속 시간에 기본 카메라(Camera), 화재감지카메라(FactoryCam), 속도감지카메라(SpeedCam)을 생성하였다. 그리고 각각 Camera 클래스를 부모클래스로, FactoryCam과 SpeedCam 클래스를 자식클래스로 설정하였다. 그런데 각 카메라의 기능을 출력하는 메소드를 추가로 생성한다고 생각해보자. 부모클래스인 Camera 클래스 내에 showMainFeature() 메소드를 추가로 생성하였다. showMainFeature() 호출 시 각 클래스에 정의되어있는 name 변수와 해당 카메라의 주요기능을 출력하도록 하였다. 그리고 아래.. 2023. 4. 28.
Chap_07. 상속 상속: 부모클래스에서 제공되는 것을 자식 클래스에서 상속받아 사용하는 것이다. 상속은 하나의 부모 클래스로부터만 상속 받을 수 있는 제약이 있다. 상속은 자식 클래스 정의 뒤에 extends 부모클래스 명을 붙여 정의할 수 있다. 해당 내용을 학습하기 위해 하위패키지를 생성해보자. 참고로 인텔리제이 상단 [Code]-[Generate]-[Constructor]를 선택하거나 인텔리제이 화면내에서 Alt+Insert 동시에 누른 후 [Constructor]를 선택하면 자동으로 생성자를 만들 수 있다. 우선 실습중인 chap_07 패키지 안에 새로운 camera 패키지를 생성하였다. camera 패키지 내에 아래와 같이 Camera, FactoryCam, SpeedCam 클래스를 생성하였다. - 일반 카메라,.. 2023. 4. 28.
Python) 공공데이터 포털 API 공휴일 정보를 활용하여 전 영업일 계산하기 파이썬을 활용하여 당일 기준 전 영업일을 계산하는 로직을 만들어보자. 전영업일 : 주말+휴일을 제외하고 영업일 기준으로 전일자. Ex) 2023.5.8의 전영업일은 2023.5.4일이다. 한국 공휴일은 매년 달라지므로 공공데이터 포털 API를 활용하여 정보를 받아오도록 하자. 아래 작업을 수행하기 위해서는 먼저 회원가입을 해야한다. 회원가입이 완료되었다면 로그인 후 아래 사이트에 접근한다. https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15012690 한국천문연구원_특일 정보 (천문우주정보)국경일정보, 공휴일정보, 기념일정보, 24절기정보, 잡절정보를 조회하는 서비스 입니다. 활용시 날짜, 순번, 특일정보의 분류, 공공기관 .. 2023. 4. 28.
Chap_07. 패키지 하나의 프로젝트를 진행할 때 여러개의 클래스로 이루어지는데 서로 연관된 클래스들끼리 묶어두는 역할이 패키지이다. 패키지 안에 클래스를 만들게되면 클래스 맨 상단에 package 정보를 반드시 명시해야하며 대부분 IDE를 이용하면 패키지 정보를 자동으로 정의해준다. 아래와 같이 상단에 package chap_07; 로 패키지 정보가 정의되며 해당 정보를 지우면 오류가 발생된다. 만약 다른 패키지에 있는 클래스를 사용해야하는 경우에는 해당 패키지 내 클래스를 사용할 것이라는 것을 알려줘야한다. 그것을 알려주는 역할이 import이다. 접근제어자 학습때 예제를 살펴보면 package chap_08 의 _00_AccessModifierTest 클래스에서 package chap_07에 있는 BlackBoxRefu.. 2023. 4. 28.
Chap_07. 접근 제어자 접근 제어자 private : 해당 클래스 내에서만 접근 가능 public : 모든 클래스에서 접근 가능 default : 같은 패키지 내에서만 접근 가능, 아무 접근제어자도 설정하지 않았을때 기본값. protected : 같은 패키지 내에서는 접근 가능, 다른 패키지인 경우 자식 클래스에서만 접근 가능 접근제어자를 학습하기 위하여 BlackBoxRefurbish라는 클래스를 새로 생성하였다. Tip) Getter & Setter 를 쉽게 생성하는 법 변수를 선언한다 상단 바 중 [Code]-[Generate] 메뉴 접근 팝업 내 [Getter and Setter] 클릭 Getter와 Setter를 생성할 변수 클릭 (Ctrl 이나 Shift를 이용하면 복수선택 가능) 이전 Getter & Setter .. 2023. 4. 27.
Chap_07. Getter & Setter Getter : 값을 가지고오는 메소드 Setter : 값을 설정하는 메소드 Getter 선언 방법 데이터타입 get변수명() { return 변수명; } String getModelName() {return modelName;} Setter 선언 방법 void set변수명(전달값) { 변수명 = 전달값; } void setModelName(String ModelName){ this.modelName = modelName; } Getter와 Setter를 활용하는 이유를 아래 예제를 통해 보자. Ex) 블랙박스 상품에 대해서 5000원할인 이벤트를 한다고 해보자. b1.price = b1.price-5000; 이 적용되어야하는데 실수로 b1.price = -5000; 으로 적용해버렸다. 그럼 블랙박스의 .. 2023. 4. 26.
Chap_07. 생성자 생성자는 객체가 만들어질 때 자동을 호출되는 메소드를 의미한다. 기존에 생성한 BlackBox 클래스를 이용해 이해해보자. "기본생성자 호출"을 출력하는 BlackBox() 생성자를 만들었다. 보통 생성자는 변수 선언 뒤에 위치하는 점을 참고하자. 생성자는 보통 클래스명() { 실행할 명령 } 으로 선언한다. 위와 같이 _08_Constructor 클래스 내에 BlackBox b1 객체를 생성하였다. b1 객체 생성 외에 아무런 명령도 입력하지 않은 상태로 실행하게 되면 "기본 생성자 호출"을 출력하게 된다. 이는 BlackBox 클래스 내에 생성자 메소드가 자동을 호출되었기 때문이다. 생성자 BlackBox()를 오버로딩으로 추가로 생성하여 블랙박스의 정보를 입력받는 메소드를 생성해보자. BlackBo.. 2023. 4. 25.
Chap_07. This 이전 시간에 학습한 BlackBox 클래스를 이용하여 This 에 대하여 학습해보자 BlackBox b1의 modelName은 까망이 이다. 이를 까망이(최신형) 으로 업데이트하기 위하여 BlackBox 클래스 내에 appendModelName() 이라는 메소드를 생성하였다. appendModelName 메소드는 modelName 입력값을 전달받아 온 후 기존 modelName에 문자열을 더하여주도록 하였다. b1.appendModelName("(최신형)") -> BlackBox 클래스 내 appendModelName("(최신형)") 메소드 실행 의도는 기존 modelName : "까망이" 에 전달값으로 받아온 modelName (최신형)을 추가하여 modelName = "까망이(최신형)" 으로 변경할 .. 2023. 4. 25.
Chap_07. 클래스 메소드 BlackBox 클래스 내에 클래스 변수를 생성하였다. 메소드 앞에 static을 붙이면 클래스 메소드가 되며, 해당 클래스에서 생성된 모든 객체에 공통적으로 사용될 때 사용한다. 아래와 같이 _06_ClassMethod를 생성하여 BlackBox.callServiceCenter() 메소드를 호출하면 서비스센터 전화번호가 출력된다. 클래스 메소드에 대하여 조금 더 살펴보자. BlackBox 클래스 내에는 4개의 인스턴스 변수와 1개의 클래스 변수, 1개의 클래스 메소드가 들어있다. 인스턴스 변수 : modelName, resolution, price, color 클래스 변수 : canAutoReport 클래스 메소드 : callServiceCenter() 인스턴스변수는 각각 클래스로부터 만들어진 객체들마.. 2023. 4. 21.
반응형