etc./Do it! 공부단

[Do it! 첫 코딩] 04장 코딩 종합선물세트, 클래스를 열어보자

innit 2021. 8. 28. 20:58

 

 

 


Ⅰ 클래스(Class, Classification)

1. 뜻 : 어떤 공통된 특징에 따라 '분류'하여 만든 코딩 종합선물세트

2. 특징

(1) 각각의 기능을 구분하여 하나로 묶고 '이 기능은 저기에 한 번, 저 기능은 여기에 한 번'식으로 쏙쏙 빼서 쉽게 사용할 수 있게 만든 것.

(2) 클래스를 선언하는 부분은 대부분 별도의 파일에 저장된다.

(3) 클래스의 이름 첫 자는 대문자로 한다.

3. 객체지향형 프로그래밍(Object Oriented Programming) : 작게 구분하는 단위인 클래스를 사용해서 코딩하는 것


Ⅱ 인스턴스(instance)

1. 뜻 : '도장 자체'를 클래스라고 했을 때 '종이에 찍힌 도장 자국'을 인스턴스라고 함.

2. 특징

(1) 인스턴스의 이름 첫 자는 소문자로 한다.

3. 인스턴스 선언하기

클래스 이름 인스턴스 이름 = new 클래스 이름();


Ⅲ 생성자(Constructor)

1. 뜻 : 클래스를 선언할 때 같이 생성하는 것으로 인스턴스의 변수에 값을 넣는 과정을 간단히 표현할 수 있게 해준다.

2. 클래스의 변수와 생성자의 변수 구분법

: 클래스에서 만들어진 변수 앞에 this를 붙인다.


Ⅳ 상속

1. 상속 기본형

class 서브클래스 extends 슈퍼클래스{

}

2. 서브클래스에서 super

: 슈퍼클래스의 생성자를 호출함.

3. 오버라이드(Override) : 슈퍼클래스의 메서드를 서브클래스에서 같은 이름의 메서드로 다시 정의하는 것

* 오버로딩(Overloading) : 같은 이름의 메서드에 다른 변수를 더한 메서드를 만든다.


Ⅴ 패키지(package)

1. 뜻 : 클래스 끼리를 묶어주는 것

2. 예시

package ABC_Company;

class 햄선물세트{

....

package ABC_Company;

class 카놀라유선물세트{

....

package ABC_Company;

class 참치선물세트{

....


Ⅵ 접근제어자(Access Modifier)

1. 뜻 : 소유권을 정의해 주는 수식어

2. 종류

public 아무나 접근 가능
private 클래스 안에서만 접근 가능
외부에서는 접근 불가능
protected 같은 패키지 안에서만 접근 가능
또는 상속을 받은 경우 접근 가능
아무것도 없을 때 같은 패키지 안에서만 접근 가능

3. private으로 선언된 변수 수정하기

(1) set 변수이름 : 변수의 값을 수정할 수 있다.

(2) get 변수이름 : 변수의 값을 가져올 수 있다.


Ⅶ 종합 실습

  슈퍼클래스 파일 서브클래스 파일 인스턴스 파일
1단계
클래스 선언하기
class 참치선물세트{
int 일반;
int 야채;
int 고추;
}
   
2단계
생성자 만들기
class 참치선물세트{
int 일반;
int 야채;
int 고추;


참치선물세트(int 일반, int 야채, int 고추){
this.일반 = 일반;
this.야채 = 야채;
this.고추 = 고추;
}
}
   
3단계
인스턴스 선언하기
class 참치선물세트{
int 일반;
int 야채;
int 고추;


참치선물세트(int 일반, int 야채, int 고추){
this.일반 = 일반;
this.야채 = 야채;
this.고추 = 고추;
}
}
  참치선물세트 참03호 = new 참치선물세트(12, 3, 3);
4단계
메서드 추가하기
class 참치선물세트{
int 일반;
int 야채;
int 고추;


참치선물세트(int 일반, int 야채, int 고추){
this.일반 = 일반;
this.야채 = 야채;
this.고추 = 고추;
}


int 총합(){
int 전체개수;
전체개수 = this.일반 + this.야채 + this.고추;
return 전체개수;
}


void 출력(String 세트이름){
코딩별.출력(“** ” + 세트이름 + “ 내용물 **”);
코딩별.출력(“일반참치:” + this.일반);
코딩별.출력(“야채참치:” + this.야채);
코딩별.출력(“고추참치:” + this.고추);
}
}
  참치선물세트 참03호 = new 참치선물세트(12, 3, 3);
5단계
메서드 사용하기
class 참치선물세트{
int 일반;
int 야채;
int 고추;


참치선물세트(int 일반, int 야채, int 고추){
this.일반 = 일반;
this.야채 = 야채;
this.고추 = 고추;
}


int 총합(){
int 전체개수;
전체개수 = this.일반 + this.야채 + this.고추;
return 전체개수;
}


void 출력(String 세트이름){
코딩별.출력(“** ” + 세트이름 + “ 내용물 **”);
코딩별.출력(“일반참치:” + this.일반);
코딩별.출력(“야채참치:” + this.야채);
코딩별.출력(“고추참치:” + this.고추);
}
}
  참치선물세트 참03호 = new 참치선물세트(12, 3, 3);


int 총개수 = 참03호.총합();


참03호.출력(“참치선물세트 03호”);
6단계
상속하기
class 참치선물세트{
int 일반;
int 야채;
int 고추;


참치선물세트(int 일반, int 야채, int 고추){
this.일반 = 일반;
this.야채 = 야채;
this.고추 = 고추;
}


int 총합(){
int 전체개수;
전체개수 = this.일반 + this.야채 + this.고추;
return 전체개수;
}


void 출력(String 세트이름){
코딩별.출력(“** ” + 세트이름 + “ 내용물 **”);
코딩별.출력(“일반참치:” + this.일반);
코딩별.출력(“야채참치:” + this.야채);
코딩별.출력(“고추참치:” + this.고추);
}
}
class 특별세트 extends 참치선물세트{
int 햄;
int 카놀라유;


특별세트(int 일반, int 햄, int 카놀라유){
super(일반, 0, 0);
this.햄 = 햄;
this.카놀라유 = 카놀라유;
}


void 출력(String 세트이름){
super.출력(세트이름);
코딩별.출력(“ 햄:” + 햄);
코딩별.출력(“ 카놀라유:” + 카놀라유);
}
}
참치선물세트 참03호 = new 참치선물세트(12, 3, 3);


int 총개수 = 참03호.총합();


참03호.출력(“참치선물세트 03호”);




특별세트 특01호 = new 특별세트(6, 3, 2);


특01호.출력(“특별세트 01호”);
7단계
접근제어자 붙이기
public class 참치선물세트{
private int 일반;
private int 야채;
private int 고추;


참치선물세트(int 일반, int 야채, int 고추){
this.일반 = 일반;
this.야채 = 야채;
this.고추 = 고추;
}


int 총합(){
int 전체개수;
전체개수 = this.일반 + this.야채 + this.고추;
return 전체개수;
}


void 출력(String 세트이름){
코딩별.출력(“** ” + 세트이름 + “ 내용물 **”);
코딩별.출력(“일반참치:” + this.일반);
코딩별.출력(“야채참치:” + this.야채);
코딩별.출력(“고추참치:” + this.고추);
}


public void set 일반(int 일반){
if(일반 < 0){
일반 = 0;
}
this.일반 = 일반;


public int get 일반(){
return this.일반;
}
}
class 특별세트 extends 참치선물세트{
int 햄;
int 카놀라유;


특별세트(int 일반, int 햄, int 카놀라유){
super(일반, 0, 0);
this.햄 = 햄;
this.카놀라유 = 카놀라유;
}


void 출력(String 세트이름){
super.출력(세트이름);
코딩별.출력(“ 햄:” + 햄);
코딩별.출력(“ 카놀라유:” + 카놀라유);
}
}
참치선물세트 참03호 = new 참치선물세트(12, 3, 3);


int 총개수 = 참03호.총합();


참03호.출력(“참치선물세트 03호”);




특별세트 특01호 = new 특별세트(6, 3, 2);


특01호.출력(“특별세트 01호”);

 


 

 

728x90
반응형