6일차: JAVA 의 class 와 instance

jk·2024년 1월 8일
0

kdt 풀스택

목록 보기
9/127



1. 변수의 스코프에 대하여 설명하시오.

  • 그 변수가 살아남을 수 있는 생존 범위.
  • 중괄호{} 내에서 선언된 변수는 중괄호를 나가면 죽는다.



2. 지역변수란?

  • 함수 안에 있는 변수.



3. 인스턴스 변수란?

  • 함수 바깥에 있는 변수.
  • class 안에 있다.



4. 아래의 함수를 펙토리얼로 표현하시오.

System.out.println("3 factorial: " + factorial(3));
//
System.out.println("12 factorial: " + factorial(12));
// 코드
static int factorial(int n) {
    if (n == 1) {
        return n = 1;
    } else {
        return (n * factorial(n - 1));
    }
}



5.클래스의 구성요소는?

  • 데이터: 변수를 선언하고 메모리에 데이터를 올린다.
  • 기능: 함수 등으로 연산한다.



6.원의 넓이는 구하는 프로그램을 아래와 같이 작성하시오.

- 원클래스를 만들것
- 변수 radius
- 변수 radius에 대한 setter getter 함수 만들것
- getArea 함수
- 메인 메소드를 가진 다른 클래스(AreaTest)에서 원 객체를 생성할것
// 코드
class Circle {
    double radius;
    String intro = "원의 반지름은 ";
    String outro = " 입니다.";
    void setRadius(double radius) {
        String print = new String();
        print += intro;
        print += radius;
        print += " 으로 바뀌었습니다.";
        System.out.println(print);
        this.radius = radius;
    }
    double getRadius() {
        double radius = this.radius;
        String print = new String();
        print += intro;
        print += radius;
        print += outro;
        System.out.println(print);
        return radius;
    }
    double getArea() {
        double area = Math.PI * Math.pow(this.radius, 2);
        String print = new String();
        print += "원의 넓이는 ";
        print += area;
        print += outro;
        System.out.println(print);
        return area;
    }
}
class AreaTest {
    public static void main(String[] args) {
        Circle circle = new Circle();
//
        double radius;
        radius = circle.getRadius();
//
        circle.setRadius(10.);
//
        radius = circle.getRadius();
//
        double area = circle.getArea();
    }
}



7. 객체에 대하여 설명하시오.

  • instance 는 class 라는 붕어빵틀에서 찍어져 나온 붕어빵이라고 할 수 있다.
  • instance 를 건물, class 를 설계도에 비유하기도 한다.



8. 아래의 클래스에 대하여 객체 생성시, 메모리 그림을 그리시오.

Rectangle rec = new Rectangle()
class Rectangle{
	double width = 20;
	double height = 20;
//	
	public double getArea() {
		return width * height;
	}
	public void setWidthHeight(double num1,double num2) {
		width = num1;
		height = num2;		
	}
	public void setWidth(double num1) {
		width = num1;	
	}
}



9.클래스와 객체의 차이는?

  • .class: 붕어빵틀.
  • instance: 붕어빵.



10.아래의 프로그램을 작성하시오.

- 1 부터 num 까지 합을 구하는 class 를 작성하도록 하시오
// 코드
class SumFromOne {
    final int FIRST_NUM = 1;
    int num;
    String intro = "합할 마지막 숫자는 ";
    String outro = " 입니다.";
    void setNum(int num) {
        String print = new String();
        print += intro;
        print += num;
        print += " 으로 바뀌었습니다.";
        System.out.println(print);
        this.num = num;
    }
    int getNum() {
        int num = this.num;
        String print = new String();
        print += intro;
        print += num;
        print += outro;
        System.out.println(print);
        return num;
    }
    int sumFromOne() {
        int sum = 0;
        for (int i = FIRST_NUM; i <= num; i++) {
            sum += i;
        }
        String print = new String();
        print += this.FIRST_NUM;
        print += "부터 ";
        print += this.num;
        print += "까지 더한 값은 ";
        print += sum;
        print += outro;
        System.out.println(print);
        return sum;
    }
}
class SumTest {
    public static void main(String[] arg) {
        SumFromOne sfo = new SumFromOne();
//
        int num;
        num = sfo.getNum();
//
        sfo.setNum(100);
//
        num = sfo.getNum();
//
        int sum = sfo.sumFromOne();
    }
}



11.생성자에 대하여 설명하시오.

  • class 이름과 똑같다.
  • new Fn() 같은 형태로 작성한다.
  • 그 class 를 메모리에 올리는 역할을 한다.
  • 변수가 초기화된다.
  • return 이 없다.
  • 생성자 함수를 따로 만들지 않았을때 javac 가 컴파일과정에서 자동으로 작성한다.



12.생성자의 용도는?

  • java 코드를 컴파일한 .class 를 메모리상에 올린다.



13.아래의 클래스를 완성하시오.

Gugudan gugudan = new Gugudan()
gugudan.printGugu(10) // 1단 부터 10단까지 출려
gugudan.printGugu(20) // 1단 부터 20단까지 출려
// 코드
class Gugudan {
    final int FIRST_DAN = 1;
    final int NINTH_DAN = 9;
    String intro = "단부터 ";
    String outro = "단까지 구구단";
    void printGugu(int lastDan) {
        String print = new String();
        print += this.FIRST_DAN;
        print += intro;
        print += lastDan;
        print += outro;		
        print += "을 시작합니다.\n\n";		
        for (int i = FIRST_DAN; i <= lastDan; i++) {
            for (int j = FIRST_DAN; j <= NINTH_DAN; j++) {
                print += i;
                print += " x ";
                print += j;
                print += " = ";
                print += (i * j);
                print += "\n";
            };
            print += "\n";
        };
        print += this.FIRST_DAN;
        print += intro;
        print += lastDan;
        print += outro;
        print += "이 끝났습니다.\n\n";
        System.out.println(print);
    }
}
profile
Brave but clumsy

0개의 댓글