본문 바로가기
반응형

Spec UP - Backend/나도코딩의 자바기본편58

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.
Chap_07. 메소드 오버로딩 지난 시간에 학습한 BlackBox 클래스를 활용하여 메소드 오버로딩을 한번 더 이해해보자. BlackBox 클래스 내에 record() 메소드를 추가하였다. record() 메소드는 아래 전달값에 따라 영상정보를 녹화하는 메소드이다. showDateTime : 날짜 정보 표시 여부 -> 값이 true 이면 "영상에 날짜 정보가 표시됩니다." 출력 showSpeed : 속도 정보 표시 여부 -> 값이 true 이면 "영상에 속도 정보가 표시됩니다" 출력 min : 영상 기록 단위(분) -> "영상은 min 분 단위로 기록됩니다" 출력 _04_Method 클래스 내 b1 객체를 생성하고 b1.record() 메소드를 전달값과 함께 호출하면 위와 같이 결과가 출력되는 것을 확인할 수 있다. 하지만 실생활에 .. 2023. 4. 21.
Chap_07. 클래스 변수와 메소드 이전시간에 학습한 BlackBox 클래스를 활용하여 클래스 변수에 대하여 이해해보자. BlackBox 클래스에는 4개의 인스턴스 변수(modelName, resolution, price, color)와 클래스 변수 1개(canAutoReport)가 선언되었다. 인스턴스 변수는 변수 앞에 static이 없으며, 각 객체들마다 서로 다른 값을 가질 수 있다. 클래스 변수는 변수 앞에 static이 함께 정의되며, 클래스로부터 만들어지는 모든 객체에 똑같이 적용된다. 객체 b1, b2 에서 canAutoReport 값 확인 시 모두 false로 동일하게 출력된다. 위 사유로 가급적 클래스 변수를 호출할때에는 클래스명을 이용해 접근한다. Ex) b1.canAutoReport 보다는 BlackBox.canAuto.. 2023. 4. 20.
Chap_07. 클래스와 인스턴스 변수 객체지향프로그래밍 (OOP : Object-Oriented Programming) 객체는 동물이나 사물 등의 개념(Ex. 컴퓨터, 그래픽카드, 마우스, 키보드 ... ) 객체지향프로그래밍은 유지보수가 용이하고, 높은 재사용성을 장점으로 가진다. 클래스의 필요성에 대하여 이해해보자. String[] items = {"CPU","RAM","하드디스크"}; 위와 같이 같은 자료형에 대하여 여러 데이터가 필요한 경우 배열을 활용하게 된다. 그런데 아래와 같이 서로 다른 자료형의 데이터의 조합이라고 한다면 배열을 활용하기가 어렵다. 차량용 블랙박스 상품을 만든다고 생각해보자. 각 상품별로 모델명, 해상도, 가격, 색상 정보가 필요하다. 이 때 모델명, 해상도, 색상은 String 자료형이지만 가격(price)정보.. 2023. 4. 20.
Quiz. 메소드를 활용한 개인정보 비공개처리 예시) 이름 : 나코딩 주민번호 : 990130-1234567 연락처 : 010-1234-5678 위와 같이 개인정보가 있을 때 개인정보 뒷자리를 비공개 ( * 마스킹처리 ) 처리 하는 메소드를 작성해보자. 하나의 메소드로 모든 동작을 처리해야하며, 이름은 2번째 글자, 주민번호는 9번째글자, 전화번호는 10번째 글자부터 * 처리한다. 변수명.subString(시작index,끝index); //문자열을 잘라준다. 내가 작성한 코드는 아래와 같다. 2023. 4. 20.
반응형