JAVA 6일차

MOZZI KIM·2022년 10월 31일
0

JAVA

목록 보기
6/21
post-thumbnail

1. 객체란 무엇인가?

객체(instance)란?

'클래스'라는 틀을 통해 만들어낸 실체를 말한다.
객체를 생성한다는 것은 해당 클래스의 .class 파일을 메모리에 올린다는 것을 의미한다.


2. 아래의 클래스에 대하여, 메모리 그림을 그리시오.

Rectangle rec = new Rectangle();

public class Rectangle {
int height;
int width;
 
  public int getHeight() {
  return height;
  }

  public void setHeight(int height) {
  this.height = height;
  }

  public int getWidth() {
  return width;
  }

  public void setWidth(int width) {
  this.width = width;
  }

  public int getArea() {
  return width * height;
  }
 
}


3. 클래스와 객체의 차이는 무엇인가?

클래스(Class)란?

  • 객체를 만들어 내기 위한 설계도 혹은 틀
    연관되어 있는 변수와 메서드의 집합

객체(Object)란?

  • 소프트웨어 세계에 구현할 대상
    클래스에 선언된 모양 그대로 생성된 실체

  • 특징
    ‘클래스의 인스턴스(instance)’ 라고도 부른다.
    객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖는다.
    oop의 관점에서 클래스의 타입으로 선언되었을 때 ‘객체’라고 부른다.


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

  • 1 부터 num 까지 합을 구하는 class 를 작성하도록 하시오.
    class Total {
    	int sum;
    	
    	public Total(int num){
    		int sum = 0;
    		
    		for(int i=1; i<=num; i++) {
    			sum += i;
    		}
    		this.sum = sum;
    	}
    	
    	int getSum() {
    		return sum;
    	}
    }
    public class TotalTest {
    	public static void main(String[] args) {
       	Total total = new Total(10);
       	System.out.println(total.getSum());
       }
    }

5.아래의 클래스를 작성하시오.

StraPrint strPrint = new StarPrint();
 
strPrint.printTriangle(3);
System.out.println();
strPrint.printReverseTriangle(3); 
class StarPrint{
	int num;
	
	public void printTriangle(int num) {
		this.num = num;
		for(int i=1; i<=num; i++) {
			for(int j=1; j<=i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
	public void printReverseTriangle(int num) {
		this.num = num;
		for(int i=1; i<=num; i++) {
			for(int j=num; j>=i; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

public class strPrint {
	public static void main(String[] args) {
		StarPrint strPrint = new StarPrint();
		strPrint.printTriangle(3);
		System.out.println();
		strPrint.printReverseTriangle(3); 

	}

}

6. 생성자란 무엇인가?

생성자란?

  • 객체를 생성할 때 호출하는 메서드 비슷한 것을 말함.
    주로 일반 멤버변수의 초기화나 객체를 생성할때 실행하는 작업을 정리한다.

  • 생성자 형태

class Person{
	String name;
	public Person(){ //생성자명은 class명과 똑같아야함
		name = '홍길동'; //생성자의 주요역할은 멤버변수의 초기화
	}
}
  • 특징
    class명과 똑같아야함.
    객체생성될때 딱 한번 호출됨.
    생성자도 overloading가능.
    상속이 안되는 유일한 멤버메서드.

7. 디폴트 생성자란 무엇인가?

디폴트 생성자란?
생성자를 정의하지 않았을 때 자바 컴파일러에서 자동으로 만들어주는 생성자를 디폴트 생성 자라 고한다.
디폴트 생성자는 매개변수가 없고 코드도 없다.


8. 생성자의 용도에 대하여 설명하시오.

  • 생성자 이름은 **클래스의 이름과 동일해야 한다.

  • 생성자는 **값을 반환하지 않고(return 안함) return type도 표시하지 않는다.

  • 리턴값이 없다는 것은 용도를 제한함을 의미 (연산 등의 용도가 아님.


즉, 생성자의 용도는 값들에 대한 초기화이다.


9. null이란?

  • null은 참조 변수에 대입 했을 때 비어 있음을 의미한다.

  • 참조 변수에는 주소값이 들어가는데 그곳이 비어 있다는 의미는 아무 곳도 가리키고 있지 않음을 의미한다. (ref가 참조하는 객체가 있었다면 그 관계를 끊는 것을 의미함) 참조 변수를 초기화 할 때 사용한다.

  • JVM 으로 하여금 해당 객체가 GC에 의한 메모리 해제 되상이 됨을 알리는 역할을 한다.


10.자바의 명명 규칙에 대하여 설명하시오.

  • 클래스
  • 메소드와 변수
  • 상수
  • camel case
  • snake case



11. 아래를 프로그래밍 하시오.

노래 한 곡을 나타내는 Song 클래스를 작성하라. 
Song은 다음 필드로 구성된다.
    - 노래의 제목을 나타내는 title
    - 가수를 나타내는 artist
    - 노래가 발표된 연도를 나타내는 year
    - 국적을 나타내는 country
또한 Song 클래스에 다음 생성자와 메소드를 작성하라.
    - 생성자 2: 기본 생성자와 매개변수로 모든 필드를 초기화하는 생성자
    - 노래 정보를 출력하는 show() 메소드
    - main() 메소드에서는 1978, 스웨덴 국적의 ABBA가 부른 "Dancing Queen"을 song 객체로 생성하고,
      show()를 이용하여 노래의 정보를 다음과 같이 출력하라.
      
      
<결과값>
1978년 스웨덴국적의 ABBA가 부른 Dancing Queen
class Song{
	String title;
	String artist;
	int year;
	String country;

    public Song(int year, String country, String artist, String title) {
        this.title = title;
        this.artist = artist;
        this.year = year;
        this.country = country;
    }
	public void Show() {
		System.out.println(year + "년 " + country  + " 국적의 " + artist +"가 부른 " + title);
	}
}


public class SongTest {

	public static void main(String[] args) {

		Song song = new Song(1978,"스웨덴","ABBA","Dancing Queen");
		song.Show();
	}
}

12. 아래가 프로그래밍이 되도록 Grade 를 완성하시오..

  Grade me = new Grade(90, 70, 100);
  System.out.println("평균은 "+me.average());
class Grade{
	int kor, eng, math;
	int sum;
	
	Grade(int k, int e, int m) {
		kor = k;
		eng = e;
		math = m;
		this.sum = k + e + m;
	}
	double average() {
		
		return sum/3.0;
	}
}
public class GradeTest {

	public static void main(String[] args) {
		Grade me = new Grade(90, 70, 100);
	    System.out.println("평균은 "+me.average());

	}

}

13. 자바 클래스를 작성하는 연습을 해보자.

다음 main() 메소드를 실행하였을 때 예시와 같이 출력되도록 TV 클래스를 작성하라.

public static void main(String[] args) {
   TV myTV = new TV("LG", 2017, 32); //LG에서 만든 2017년 32인치
   myTV.show();
}

<출력값>
LG에서 만든 2017년형 32인치 TV
class TV{
	String name;
	int year;
	int size;
	
	TV(String name, int year, int size){
		this.name = name;
		this.year = year;
		this.size = size;
	}
	void show(){
		System.out.println(name + "에서 만든" + year +"년 형 " + size + "인치 TV");
	}
}
public class LgTv {
	public static void main(String[] args) {
		 TV myTV = new TV("LG", 2017, 32); //LG에서 만든 2017년 32인치
		 myTV.show();
	}

}

14. 아래의 BankAccount 객체에 대하여 그림을 그리시오.

BankAccount ref1 = new BankAccount();
BankAccount ref2 = ref1;


15. 아래의 프로그래밍을 작성하시오.

Gugudan gugudan = new Gugudan();
gugudan.printGugu(10); //1단부터 10단까지 출력
gugudan.printGugu(20); //1단부터 20단까지 출력
class Gugudan{
	int num;
	void printGugu(int num) {
		for(int i=2; i<=num; i++) {
			for(int j=1; j<=9; j++) {
				System.out.println(i + " * " + j + " = " + (i*j));
			}
			System.out.println();
		}
	}
}

public class GugudanTest {

	public static void main(String[] args) {
		Gugudan gugudan = new Gugudan();
		gugudan.printGugu(10); //1단부터 10단까지 출력
		System.out.println("====================================");
		gugudan.printGugu(20); //1단부터 20단까지 출력

	}

}
profile
코린이

0개의 댓글