24일차

김윤정·2024년 7월 19일

코딩

목록 보기
24/60
post-thumbnail

1. 아래가 돌아 가도록 Circle1 클래스를 구현하시오.

package day_2024_07_16;

class Circle1 {
int radius;

  void setRadius(int r) {
     radius = r;
  }

  int getRadius() {
     return radius;
  }

  double getArea() {
     return radius * radius * Math.PI;
  }

  void addCircle(Circle1 circle1, Circle1 circle2) {
     System.out.println("두 원의 합은 " + (circle1.getArea() + circle2.getArea()));
  }

  double mulCircle(Circle1 circle1, int mul) {
     return circle1.getArea() * mul;
  }

  double absCircle(Circle1 circle1, Circle1 circle2) {
     double abs = circle1.getArea() - circle2.getArea();

     if (abs < 0) {
        abs *= -1;
     }
     return (abs >= 0) ? abs : (-1 * abs);
  }

}

public class Test16 {
public static void main(String[] args) {

  // 참조변수의 매개변수 선언 문제 - 원 넓이
        Circle1 circle1 = new Circle1();
        circle1.setRadius(10);  
        System.out.println(circle1.getArea());

        Circle1 circle2 = new Circle1();
        circle2.setRadius(10);
        System.out.println(circle2.getArea());

        circle1.addCircle(circle1, circle2); // 두 원의 넓이의 합 : 628.30~
        System.out.println(circle1.mulCircle(circle1, 2));
        System.out.println(circle1.mulCircle(circle2, 3));

        System.out.println(circle1.absCircle(circle1, circle2)); // 두 개의 차를 절대값

}
}

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

변수의 스코프란 임의 변수에 대한 '변수 접근 가능 영역' 또는 '변수가 소멸되지 않고 존재할 수 있는 영역'을 의미합니다.

중괄호{}로 특정 영역을 감싸면, 그 영역은 변수에 관한 별도의 스코프를 형성하게 됩니다.

3. 지역변수란?

중괄호 안에서 선언된 특정 영역에서만 접근 가능한 변수를 지역변수라 합니다.

지역변수의 특징

중괄호 영역 내에서만 접근이 가능합니다.
중괄호 영역을 빠져나가는 순간에 소멸되어 접근이 불가능합니다.
여기서 소멸이 갖는 의미는 단순히 접근만 불가능해지는 것이 아니라 메모리상에서도 삭제가 된다는 것을 말합니다.

이때 매개변수는 중괄호 밖에서 선언되지만, 지역변수의 특징을 갖습니다.

또한 for문 안에서 선언된 변수도 지역변수의 특징을 갖습니다

4. 인스턴스 변수란?

클래스내에 선언된 변수입니다.

인스턴스 변수의 특징

  • 클래스 내부에 선언: 인스턴스 변수는 클래스 내부, 메서드 외부에 선언됩니다.
  • 객체별로 독립적: 클래스의 각 객체는 자신의 인스턴스 변수를 가지며, 다른 객체의 인스턴스 변수와 독립적입니다.
  • 객체가 생성될 때 초기화: 인스턴스 변수는 객체가 생성될 때 자동으로 초기화됩니다.
  • 객체의 수명과 동일: 인스턴스 변수는 객체가 존재하는 동안 존재하며, 객체가 소멸될 때 함께 소멸됩니다.

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

  • 클래스 이름 (Class Name): 클래스의 이름은 클래스를 식별하는 데 사용됩니다. 자바에서는 클래스 이름의 첫 글자를 대문자로 하는 것이 관례입니다

  • 필드 (Fields) 또는 인스턴스 변수 (Instance Variables): 필드는 클래스의 상태(state)를 저장하는 변수입니다. 클래스 내부에서 선언되며, 객체가 생성될 때 각 객체에 고유한 값을 가질 수 있습니다

  • 메서드 (Methods): 메서드는 클래스가 수행할 수 있는 동작이나 기능을 정의합니다. 메서드는 특정 작업을 수행하기 위한 코드를 포함합니다.

  • 생성자 (Constructors): 생성자는 객체가 생성될 때 호출되며, 객체의 초기화를 담당합니다. 생성자의 이름은 클래스의 이름과 동일하며, 반환 타입이 없습니다.

  • 초기화 블록 (Initialization Blocks): 초기화 블록은 인스턴스 초기화 블록과 정적 초기화 블록으로 나뉩니다. 이들은 필드의 초기화에 사용됩니다.

  • 내부 클래스 (Inner Classes): 내부 클래스는 클래스 내에 선언된 또 다른 클래스입니다. 내부 클래스는 외부 클래스의 멤버에 쉽게 접근할 수 있습니다.

  • 인터페이스 (Interfaces): 인터페이스는 클래스가 구현해야 하는 메서드의 집합을 정의합니다. 클래스는 여러 인터페이스를 구현할 수 있습니다.

  • 상수 (Constants): 상수는 변경되지 않는 값을 저장하기 위한 변수입니다. static과 final 키워드를 사용하여 정의합니다.

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

  • 원클래스를 만들것
  • 변수 radius
  • 변수 radius에 대한 setter getter 함수 만들것
  • getArea 함수
    -메인 메소드를 가진 다른 클래스(AreaTest)에서 원 객체를 생성할것
class Circle2 {
	int radius;

	void setRadius(int radius) {
		this.radius = radius;
	}

	int getRadius() {
		return radius;

	}
	
	double getArea() {
		return  radius*radius*Math.PI;
	}

}

public class _06 {
	public static void main(String[] args) {

		Circle2 circle = new Circle2();
		circle.setRadius(5);
		System.out.println(circle.getArea());
	}
}

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

객체(Object)는 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 데이터와 해당 데이터와 관련된 동작(메소드)을 하나로 묶어주는 단위입니다. 객체는 현실 세계의 사물이나 개념을 프로그래밍적으로 모델링한 것으로, 클래스로부터 생성됩니다.

객체의 구성 요소

  • 속성 (Attributes): 객체가 가지는 데이터 또는 상태를 의미합니다. 자바에서는 속성이 인스턴스 변수(필드)로 구현됩니다.
  • 행동 (Behavior): 객체가 할 수 있는 동작 또는 행위를 의미합니다. 자바에서는 행동이 메소드로 구현됩니다.

클래스와 객체의 관계

  • 클래스: 객체를 생성하기 위한 설계도(청사진)입니다. 클래스는 객체의 속성과 행동을 정의합니다.
  • 객체: 클래스에 정의된 대로 생성된 실체(인스턴스)입니다. 객체는 클래스의 인스턴스라고도 불립니다.

8.아래의 프로그램을 작성(객체로-클래스를 만들어서) 하시오.

-클래스 이름및 함수구성은 본인이 구성 해 볼것
-1 부터 num 까지 합을 구하는 class 를 작성하도록 하시오

class Sum{
	int sum = 0;
	
	int sumNum(int num) {
		for(int i = 1;i <= num;i++) {
			sum += i;
		}
		
		return sum;
	}
}
public class _06 {

	public static void main(String[] args) {
		Sum sum = new Sum();
		
		System.out.println(sum.sumNum(100));
	}

}

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

Gugudan gugudan = new Gugudan()

gugudan.printGuGu(10) // 1단 부터 10단 까지 출력
gugudan.printGuGu(20) // 1단 부터 20단 까지 출력

class Gugudan {

	void printGuGu(int n) {
		for (int i = 1; i <= n; i++) {
			System.out.println(i + "단:");
			for (int j = 1; j <= 9; j++) {
				System.out.println(i + " x " + j + " = " + (i * j));
			}
			System.out.println();
		}
	}
}

public class _06 {
	public static void main(String[] args) {

		Gugudan gugudan = new Gugudan();
		gugudan.printGuGu(10);
		gugudan.printGuGu(20);
	}
}

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

Star star = new Star()

star.printStar(5) //
star.reverseStar(5) //

=================================

class Star {

    void printStar(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

    void reverseStar(int n) {
        for (int i = n; i >= 1; i--) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

  
    void printFullPattern(int n) {
        printStar(n);
        reverseStar(n);
    }
}
public class _06 {
	public static void main(String[] args) {
		   Star star = new Star();
	        
	       
	        star.printStar(5);
	        
	        
	        star.reverseStar(5);
	        
	        
	        star.printFullPattern(5);
	    }
	}

	

11. 아래를 구현하시오.

main(){

Money money = new Money();
money.setMoney(1456000);
money.show();
}

출력===================
1456000
오만원 : 29장
만원 : 0장
오천원 : 1장
천원 : 1장
오백원 : 0개
백원 : 0개

class Money{
	int money;
 void setMoney(int money) {
	 this.money=money;
 }
 void show() {     
     int money50000, money10000, money5000, money1000, money500, money100;
     int saveMoney = money;
     
     money50000 = saveMoney / 50000;
     saveMoney = saveMoney % 50000;
     
     money10000 = saveMoney / 10000;
     saveMoney = saveMoney % 10000;
     
     money5000 = saveMoney / 5000;
     saveMoney = saveMoney % 5000;
     
     money1000 = saveMoney / 1000;
     saveMoney = saveMoney % 1000;
     
     money500 = saveMoney / 500;
     saveMoney = saveMoney % 500;
     
     money100 = saveMoney / 100;
     saveMoney = saveMoney % 100;
     
     System.out.println(money);
     System.out.println("오만원:"+money50000+"장");
     System.out.println("만원:"+money10000+"장");
     System.out.println("오천원:"+money5000+"장");
     System.out.println("천원:"+money1000+"장");
     System.out.println("오백원:"+money500+"개");
     System.out.println("백원:"+money100+"개");
     

     

 }
}
public class _06 {

	public static void main(String[] args) {

		Money money=new Money();
		money.setMoney(1456000);
		money.show();

	}
}

0개의 댓글