/*===================================
■■■ 클래스와 인스턴스 ■■■
===================================*/
// 직사각형 클래스 설계 실습
/*
직사각형의 넓이와 둘레 계산 → 클래스 표현
클래스의 정체성 → 직사각형
클래스의 속성 → 가로, 세로, (넓이, 둘레, 부피, 무게, 재질, 색깔, ......)
클래스의 기능 → 넓이 계산, 둘레 계산, 가로세로 입력, 결과출력, .......
객체를 구성 → 데이터 (속성, 상태) + 기능(동작, 행위)
↓ ↓ ↓
클래스 설계 → 변수 + 메소드
class 직사각형
{
// 데이터(속성, 상태) → 변수 ( 순서 의미 없음 )
int 가로, 세로;
// 기능(동작, 행위) → 메소드( 순서 의미 없음 )
가로세로 입력()
{
}
둘레 계산()
{
}
넓이 계산()
{
}
결과 출력()
{
}
}
*/
// ※ 하나의 자바 파일(.java)에 여러개의 클래스(class)를 설계할 수 있나 ????? 있다.
// 하지만, 『public class』 는 하나만 올 수 있다.
// public class 의 name 을 따라 파일이름으로 선정하고 저장한다.
// 일반적으로는 하나의 파일에 하나의 클래스를 설계한다.
// 또한, 여러 개의 클래스가 설계된 파일을 컴파일하게 되면
// 내부에 설계된 클래스의 수 만큼 클래스 파일(.class)이 파생된다.
import java.util.Scanner; // import 구문의 위치는 여러 개의 클래스가 생성될 때 다 포함
// 시키는 위치에 쓰여야 하기때문에
// 이 문제에서는 class Rect 위에 적어주어야 함(밑에
// public class 있음)
class Rect // 직사각형 클래스 설계
{
// 데이터(속성, 상태) → 변수 ( 순서 의미 없음 )
int w, h; //가로, 세로;
// 기능(동작, 행위) → 메소드( 순서 의미 없음 )
void input() //메소드 1 가로세로 입력()
// 반환 값이 없기때문에 void 를 붙여준다
{
Scanner sc = new Scanner(System.in); // Rect ob = new Rect();
// Rect 클래스의 ob를 새로운 객체로선언
// ↓ intput 메소드 호출하면
System.out.print("가로 입력 : "); // ob.input() → Scanner 가 올라옴
w = sc.nextInt();
System.out.print("세로 입력 : ");
h = sc.nextInt();
}
int calLength() //메소드 2.둘레 계산()→ (가로+세로)*2
{
int d; // 둘레값을 담을 변수 선언
d = (w+h)*2; // 둘레값 초기화(연산)
return d; // 둘레값을 반환한다.(calLengh는 호출되면 둘레계산하고 값을 넘겨주는
// 기계이다.)
// return (w+h) * 2; → 가능하나, 메소드의 내용이 길어지면 불가능
}
int calArea() //메소드 3.넓이 계산()→가로*세로
{
int s; // 넓이 값을 담을 변수 선언
s = w*h; // 넓이값 초기화(연산)
return s; // 넓이값을 반환한다.(calArea는 호출되면 둘레계산하고 값을 넘겨주는
// 기계이다.)
}
void print(int a, int l) //메소드 4. 전체 결과 출력()
{
// 가로 : 10
// 세로 : 20
// 넓이 : xxx
// 둘레 : xxx
System.out.println("가로 : " + w);
System.out.println("세로 : " + h);
System.out.println("넓이 : " + a);
System.out.println("둘레 : " + l);
}
}
// ** 클래스와 인스턴스 교육 직방이해
// 새로운 클래스 생성
// 변수선언과 메소드 생성
// 메소드를 반환해야할 값인지 ( or 출력만을 할건지 고려)
// 메소드의 성질을 정하고
// 메소드를 만들어가면서 클래스를 설계한다.
// 이후 메인클래스에서 불러올때는
// 해당 메소드들을 새롭게 선언해주고,
// 결과출력 기능을하는 메소드를 정의하고 그 값을 대입해서
// 최종연산이 가능케 해준다.
public class Test072
{
public static void main(String[] args)
{
// Rect 클래스 기반의 인스턴스 생성
Rect ob = new Rect();
// 입력 메소드 호출
ob.input();
// 넓이 연산 메소드 호출 및 변수초기화
int area = ob.calArea();
// 둘레 연산 메소드 호출
int length = ob.calLength();
// 출력메소드 호출
ob.print(area, length);
}
}
// 실행 결과
/*
가로 입력 : 1020
세로 입력 : 1
가로 : 1020
세로 : 1
넓이 : 1020
둘레 : 2042
계속하려면 아무 키나 누르십시오 . . .
*/
728x90
'JAVA' 카테고리의 다른 글
Test074.java / 클래스와 인스턴스 / 사용자로부터 임의의 정수를 입력받아 1부터 입력받은 수 까지의 합을 연산하여 결과값을 출력하는 프로그램 구현 (0) | 2022.09.09 |
---|---|
Test073.java - CircleTest.java / 클래스와 인스턴스 / 원의 넓이와 둘레 구하기 (0) | 2022.09.09 |
Test071.java / 지역변수와 전역변수 (0) | 2022.08.27 |
Test070.java / 지역변수와 전역변수 (0) | 2022.08.27 |
Test069.java / 실행 흐름의 컨트롤(제어문) - return / 기본 구문 (0) | 2022.08.27 |
댓글