Java 기초 접근제어지시자 - 연습문제(1)
728x90
기본 환경
JDK : 1.8.0_261 버전 JRE : 1.8.0_261 버전 JAVA VERSION : 8 업데이트 261 Eclipse IDE VERSION : 2020-06버전 |
시나리오
사각형을 구성하는 두개의 x좌표 y좌표를 생성자의 매개변수로 넘기고 그 넓이를 구하는 클래스를 만들어라
(단, x,y좌표가 0보다 작거나 100보다 크면 안되며 오른쪽의 x,y좌표가 왼쪽 x,y좌표보다 작아서는 안된다.)
다음과 같은 값이 나와야 합닌다.
class QuRectangle
{
public static void main(String[] args)
{
//여기부터
// Rectangle rec = new Rectangle();
// rec.ulx=22;
// rec.uly=22;
// rec.lrx=10;
// rec.lry=10;
//여기까지는 정보은닉후 실행되지 않게 해야한다....
//아래 생성자로만 객체생성후 초기화 되도록 처리한다...
Rectangle rec1 = new Rectangle(1,1,10,10);
rec1.showArea();
Rectangle rec2 = new Rectangle(-2,-2,101,101);
rec2.showArea();
Rectangle rec3 = new Rectangle(10,10,1,1);
rec3.showArea();
}
}
정답
package ex10accessmodifier;
class Rectangle
{
//멤버변수
private int ulx, uly;//좌상단(upper left x, upper left y)
private int lrx, lry;//우하단(lower right x, lower right y)
//좌표값이 정상인지 판단하기 위한 변수
private boolean isTrue = true;
/*
디폴트(기본) 생성자는 개발자가 생성자를 정의하지 않았을때만 자동으로 생성된다.
*/
// public Rectangle() {
// }
//생성자
public Rectangle(int ulx, int uly, int lrx, int lry) {
// if(ulx < 0 || ulx > 100) {
// System.out.println("좌상단 좌표 범위가 잘못되었습니다.");
// }
// else if(uly < 0 || uly > 100) {
// System.out.println("좌상단 좌표 범위가 잘못되었습니다.");
// }
// if(lrx < 0 || lrx > 100) {
// System.out.println("우하단 좌표 범위가 잘못되었습니다.");
// }
// else if(lry < 0 || lry > 100) {
// System.out.println("우하단 좌표 범위가 잘못되었습니다.");
// }
// else {
// if(lrx < ulx) {
// System.out.println("좌측 우측 좌표 지정이 잘못되었습니다.");
// }
// else if(lry < uly){
// System.out.println("좌측 우즉 좌표 지정이 잘못되었습니다.");
// }
// else {
// isTrue = true;
// this.ulx = ulx;
// this.uly = uly;
// this.lrx = lrx;
// this.lry = lry;
// }
if(isRange(ulx) == false || isRange(uly) == false){
System.out.println("좌측상단의 좌표범위가 잘못되었습니다.");
isTrue = false;
}
if(isRange(ulx) == false || isRange(uly) == false){
System.out.println("좌측상단의 좌표범위가 잘못되었습니다.");
isTrue = false;
}
//좌측 좌표와 우측 좌표가 뒤바뀐 경우 오류로 처리
if(lrx < ulx) {
System.out.println("좌측 우측 좌표 지정이 잘못되었습니다.");
isTrue = false;
}
if(lry < uly){
System.out.println("좌측 우즉 좌표 지정이 잘못되었습니다.");
isTrue = false;
}
this.ulx = ulx;
this.uly = uly;
this.lrx = lrx;
this.lry = lry;
}
public boolean isRange(int point) {
if(point < 0 || point > 100) {
return false;
}
else
return true;
}
public void showArea()
{
if(isTrue == false) {
System.out.println("좌표값 오류로 없이를 계산할 수 없습니다.");
return;
}
else {
int width = lrx - ulx;
int height = lry - uly;
int area = width*height;
System.out.println("넓이 :" + area);
}
}
}
class QuRectangle
{
public static void main(String[] args)
{
//여기부터
// Rectangle rec = new Rectangle();
// rec.ulx=22;
// rec.uly=22;
// rec.lrx=10;
// rec.lry=10;
//여기까지는 정보은닉후 실행되지 않게 해야한다....
//아래 생성자로만 객체생성후 초기화 되도록 처리한다...
Rectangle rec1 = new Rectangle(1,1,10,10);
rec1.showArea();
Rectangle rec2 = new Rectangle(-2,-2,101,101);
rec2.showArea();
Rectangle rec3 = new Rectangle(10,10,1,1);
rec3.showArea();
}
}
'Java > Java_기초부터 _끝까지' 카테고리의 다른 글
Java 기초 static(2) - StaticBlock (0) | 2020.11.17 |
---|---|
Java 기초 static(1) (0) | 2020.11.17 |
Java 기초 접근제어지시자 - 캡술화 (0) | 2020.11.16 |
Java 기초 접근제어지시자 - 과일판매 (0) | 2020.11.16 |
Java 기초 접근제어지시자 - 패키지편 (0) | 2020.11.13 |