본문 바로가기

프로그램언어/자바

클래스1

클래스

객체지향 프로그래밍(OOP)에서 클래스는 특정 종류의 객체내에 있는 변수와 메소드를 정의하는 일종의 틀, 즉 템플릿이다. 따라서, 객체는 클래스로 규정된 인스턴스로서, 변수 대신 실제값을 가진다.

 

객체 생성

클래스명 레퍼런스변수명

Student stu;

 

레퍼런스변수명 = new 클래스명()

stu = new Student();

Student stu = new Student();

 

객체 멤버의 접근

레퍼런스변수명.필드

Student stu = new Student();

stu.age = 21;

 

레퍼런스변수명.메소드명

Student stu = new Student();

stu.setName("홍길동');

 

예제]

class Student

{

    String name;

    int age;

 

    public void setName(String n) {

        name = n;

    }

 

    public String getName() {

        return name;

    }

}

public class Ex04 {

 

    public static void main(String[] args) {

        Student stu = new Student();

        stu.setName("홍길동");

        stu.age = 18;

 

        String s_name = stu.getName();

 

        System.out.println("이름 : " + s_name);

        System.out.println("나이 : " + stu.age);

    }

}

실행결과]

이름 : 홍길동

나이 : 18

 

클래스의 접근 지정자

private : private멤버의 사용 범위는 소속된 클래스내의 메소드로 국한된다.(데이터의 은닉성)

public : 객체가 선언된 곳이라면 어디서 든지 사용할 수 있다.

           일반적으로 필드명는 private로 선언하고 메소드는 public으로 선언한다.

protected : 자신의 클래스 내부에서 사용할수 있고 상속 받은 하위 클래스에서 접근하여 사용할 수 있다.

 

 

메소드 정의하기

[지정자] 리턴타입 메소드명([인자) {

    //메소드가 처리하는 실행문

    return 결과값;

}

 

메소드의 오버로딩

메소드의 이름이 같고 인자 리스트는 반드시 달라야한다.(인자 개수, 인자 타입, 인자 순서)

 

생성자

생성자는 이름은 클래스명과 동일하다.

생성자는 자료형을 지정하지 않는다.

생성자는 객체를 선언할 때 컴파일러에 위해 자동으로 호출된다.

객체의 초기화란 멤버 필드의 초기화를 의미한다.

 

생성자 오버로딩

 

this 키워드

this는 객체생성 후에 메모리에 생성된 자기 자신의 인스턴스를 의미한다.

 

문제]

[클래스 선언, 멤버변수, 메소드 작성]

1. 가로와 세로의 길이를 입력 받아 사각형의 넓이를 출력하시오.

Rectangle 클래스로 지정, 가로와 세로의 멤버변수를 선언, 사각형의 넓이를 구하는 메소드 작성

필드명 : garo, sero, result;

메소드명 : void Nubi(int m, int n), void Show()

입력 예]

4 5

 

출력 예]

사각형의 넓이는 20입니다.

 

 

 

2. 가로와 세로의 길이를 입력 받아 삼각형의 넓이를 출력하시오.

Triangle 클래스로 지정, 가로와 세로의 멤버변수를 선언, 삼각형의 넓이를 구하는 메소드 작성

 

입력 예]                               출력 예]

4 5                                     삼각형의 넓이는 10입니다.

 

 

 

3. 반지름의 길이를 입력 받아 원형의 넓이를 출력하시오.

Ellipse 클래스로 지정, 반지름의 멤버변수를 선언, 원형의 넓이를 구하는 메소드 작성

 

입력 예]                              출력 예]

5                                       원형의 넓이는 78.5입니다.

 

 

 

4. 사각형, 삼각형, 원형 중 한 가지를 선택하여 넓이를 출력하시오.

1, 2, 3번 문제들의 각각의 메소드를 Shape 클래스에 작성

 

입력 예]

1 : 사각형, 2 : 삼각형, 3 : 원형 중 하나를 선택하여 숫자를 입력 : 2

가로 길이 : 4

세로 길이 : 5

 

출력 예]

삼각형의 넓이는 10입니다.

 

 

 

5. 두 개의 정수를 입력 받아 덧셈으로 계산하여 출력하시오.

Calculator 클래스로 지정, 두 개의 멤버변수 지정, 덧셈 메소드를 작성

 

입력 예]                               출력 예]

4 5                                      10

 

 

 

6. 두 개의 정수를 입력 받아 두수를 뺄셈으로 계산하여 출력하시오.

Calculator 클래스로 지정, 두 개의 멤버변수 지정, 뺄셈 메소드를 작성

 

입력 예]                                출력 예]

4 5                                       -1

 

 

 

7. 두 개의 정수를 입력 받아 곱셈으로 계산하여 출력하시오.

Calculator 클래스로 지정, 두 개의 멤버변수 지정, 곱셈 메소드를 작성

 

입력 예]                              출력 예]

4 5                                     20

 

 

 

8. 두 개의 정수를 입력 받아 나눗셈으로 계산하여 출력하시오.

Calculator 클래스로 지정, 두 개의 멤버변수 지정, 나눗셈 메소드를 작성

 

입력 예]                              출력 예]

20                                      4 5

 

 

 

9. 두 개의 정수를 입력 받아 사칙연산중 하나를 선택하여 계산하여 출력하시오.

Calculator 클래스로 지정, 두 개의 멤버변수 지정, 덧셈, 뺄셈, 곱셈, 나눗셈 메소드를 작성

 

입력 예]                                                  출력 예]

두 개의 숫자를 입력 : 4 5                             9

사칙연산 중 하나를 입력 : +

 

 

 

10. 삼각형의 높이 n과 종류 m을 입력받은 후 다음과 같은 삼각형 형태로 출력하는 프로그램을 작성하시오. Star로 클래스 이름 지정, 종류1, 2, 3의 메소드 작성

입력 형식

삼각형의 크기 n(n의 범위는 100 이하의 자연수)과 종류 m(m1부터 3사이의 자연수)을 입력받는다.

 

출력 형식

위에서 언급한 3가지 종류를 입력에서 들어온 높이 n과 종류 m에 맞춰서 출력한다.

입력된 데이터가 주어진 범위를 벗어나면 "INPUT ERROR!"을 출력한다.

 

입력 예]

삼각형의 크기(n)과 종류(m)을 입력 : 3 2

 

출력 예]

***

**

*

 

[생성자]

11. 이름, 전화번호, 주소 입력 받아 출력하시오. (단 생성자 함수로 다음과 같이 초기화 한다. “이름 : 없음, 전화번호 : 없음, 주소 : 없음”)

Student 클래스 선언, 이름, 전화번호, 주소 멤버변수 선언, 이름, 전화번호, 주소를 출력하는 메소드 작성

 

입력 예]                                                 출력 예]

이름 : 홍길동                                           이름 : 없음, 전화번호 : 없음, 주소 : 없음

전화번호 : 123-4567                                이름 : 홍길동, 전화번호 : 123-4567, 주소 : 대전시

주소 : 대전시

 

 

 

12. 국어, 역사, 수학 입력 받아 출력하시오. (단 생성자 함수로 다음과 같이 초기화 한다. “국어 : 0, 역사 : 0, 수학 : 0”)

Student 클래스 선언, 국어, 역사, 수학, 합계, 평균 멤버변수 선언, 국어, 수학, 합계, 평균를 출력하는 메소드 작성

 

입력 예]                                               출력 예]

국어 : 100                                            국어 : 0, 역사 : 0, 수학 : 0

역사 : 90                                              국어 : 100, 역사 : 90, 수학 : 70, 합계 : 260, 평균 : 86.666664

수학 : 70

 

 

 

13. 생년월일을 입력하여 나이를 구하시오. (단 클래스 선언시 현재날짜를 입력하여 출력하도록 초기화한다.)

MyData 클래스를 선언, , , 일 멤버변수 선언, 나이를 구하는 메서드작성

 

입력 예]                                      출력 예]

2000 5 4                                     2015227

                                                  15

 

 

[생성자 오버로딩]

14. 이름, 전화번호, 주소 등을 인스턴스생성시 인자로 대입하여 출력하시오.

생성자 함수로 함수원형만 생성

생성자 함수로 이름만 받을 수 있도록 매개변수 생성

생성자 함수로 이름과 전화번호만 받을 수 있도록 매개변수 생성

생성자 함수로 이름, 전화번호, 주소를 받을 수 있도록 매개생수 생성

Student 클래스 선언, 이름, 전화번호, 주소 멤버변수 선언, 이름, 전화번호, 주소를 출력하는 메소드 작성

 

입력 예] 출력 예]
인스턴스변수 선언  

 

입력 예] 출력 예]
인스턴스변수 선언과 동시에 홍길동을 초기값으로 대입  이름 : 홍길동

 

입력 예] 출력 예]
인스턴스변수 선언과 동시에 홍길동과 123-4567”을 초기값으로 대입 이름 : 홍길동, 전화번호 : 123-4567

 

입력 예] 출력 예]
인스턴스변수 선언과 동시에 홍길동과 123-4567과 대전시을 초기값으로 대입 이름 : 홍길동, 전화번호 : 123-4567, 주소 : 대전시

 

 

15. 이름, 국어, 역사, 수학 등을 인스턴스생성시 인자로 대입하여 출력하시오.

생성자 함수로 함수원형만 생성

생성자 함수로 이름만 받을 수 있도록 매개변수 생성

생성자 함수로 국어, 역사, 수학만 받을 수 있도록 매개변수 생성

생성자 함수로 이름, 국어, 역사, 수학을 받을 수 있도록 매개생수 생성

 

Student 클래스 선언, 이름, 국어, 역사, 수학 멤버변수 선언, 합계와 평균을 계산하고 출력하는 메소드 작성

 

입력 예] 출력 예]
인스턴스변수 선언  

 

입력 예] 출력 예]
인스턴스변수 선언과 동시에 홍길동을 초기값으로 대입 이름 : 홍길동

 

입력 예]
인스턴스변수 선언과 동시에 “100 90 70”을 초기값으로 대입
출력 예]
이름 : 없음, 국어 : 100, 역사 : 90, 수학 : 70, 합계 : 260, 평균 : 86.7

 

입력 예]
인스턴스변수 선언과 동시에 홍길동 100 90 70”을 초기값으로 대입
출력 예]
이름 : 홍길동, 국어 : 100, 역사 : 90, 수학 : 70, 합계 : 260, 평균 : 86.7

 

 

16. 이름, , , 일 등을 인스턴스생성시 인자로 대입하여 나이를 출력하시오.

생성자 함수로 함수원형만 생성

생성자 함수로 이름만 받을 수 있도록 매개변수 생성

생성자 함수로 현재 날짜(, , )만 받을 수 있도록 매개변수를 생성

생성자 함수로 이름, 현재 날짜(, , )를 받을 수 있도록 매개변수를 생성

MyData 클래스를 선언, , , 일 멤버변수 선언, 나이를 구하는 메서드작성

 

입력 예] 출력 예]
인스턴스변수 선언  

 

입력 예] 출력 예]
인스턴스변수 선언시 홍길동을 초기값으로 대입 이름 : 홍길동

 

입력 예]

인스턴스변수 선언시 오늘 날짜(2015, 2, 27)를 초기값으로 대입

메소드에 본인 생년월일을 입력하여 실행 ex)test.AgeCalc(2000, 4, 5)

출력 예]

오늘 날짜 : 2015 2 27

개똥이의 나이는 15살이고 생일은 4 5일입니다.

 

입력 예]

인스턴스변수 선언시 이름과 오늘 날짜(홍길동, 2015, 2 ,27)를 초기값으로 대입

메소드에 본인 생년월일을 입력하여 실행 ex)test.AgeCalc(1998, 5, 15)

출력 예]

오늘 날짜 : 2015 2 27

홍길동의 나이는 17살이고 생일은 5 15일입니다.

 

[package명을 지정 : dun.com, Varags기법]

17. 학년별 한 학생의 성적을 처리하는 프로그램을 작성하시오.

 

중간고사

기말고사

1학년

국어, 영어, 수학, 역사

국어, 영어, 수학, 역사, 생물

2학년

국어, 영어, 수학, 역사, 물리

국어, 영어, 수학, 역사, 물리, 지구과학

3학년

국어, 영어, 수학, 역사, 물리, 화학...

국어, 영어, 수학, 역사, 생물, 체육, 컴퓨터...

Score 클래스 생성, 학년, 이름, 개수, 총점을 매개변수로 선언, 과목점수를 받는 메소드작성(15이하의 과목 입력 가능), 합계와 평균을 출력하는 메소드작성

생성자 함수로 함수원형만 생성

생성자 함수로 학년과 이름을 받을 수 있도록 매개변수 생성

 

입력 예]

인스턴스 변수 생성하고 과목점수 메소드에 값을 대입하고 호출( 함수이름(70,80,90,70,50,60); )

 

출력 예]

학년 : 0, 이름 : 아무개

과목 수 : 6, 총점 : 420, 평균 : 70.0

 

입력 예]

인스턴스 변수 생성하고 생성자 함수에 1홍길동을 대입한다.

과목점수 메소드에 값을 대입하고 호출 ( 함수이름(70,85,100,65,50,80,90,85,50); )

 

출력 예]

학년 : 1, 이름 : 홍길동

과목 수 : 9, 총점 : 675, 평균 : 75.0

 

 

입력 예]

인스턴스 변수 생성하고 생성자 함수에 3일지매을 대입한다.

과목점수 메소드에 값을 대입하고 호출 ( 함수이름(70,85,100,65,50,80,90,85,50,75,85,95); )

 

 

출력 예]

학년 : 3, 이름 : 일지매

과목 수 : 12, 총점 : 930, 평균 : 77.5

 

 

 

18. A회사는 3개의 공장을 가지고 있다. 3개의 공장은 똑같은 제품을 생산하는데 각각의 공장마다 제품을 생산하는 생산자수는 각각 다르다. 공장의 생산능력을 확인하기 위해 공장마다 생산자의 하루 제품 생산수를 입력받아 평균생산량을 출력하도록 프로그램을 작성하시오.

 

) 1공장의 생산자 수는 5명이고 각각의 하루 생산량은 150, 179, 120, 160, 180이다 1공장의 평균 상산량은 157.8개이다.

 

생산자수

생산량

1공장

5

150, 179, 120, 160, 180

2공장

10

130, 180, 156, 230, 174, 109, 168, 125, 143, 165

3공장

20

130, 123, 181, 126, 130, 174, 129, 160, 120, 143, 165, 120, 130, 140, 150, 135, 172, 120, 135, 146

Company 클래스 선언, 공장이름, 생산자수, 합계를 매개변수로 선언, 생산량을 입력받는 메소드와 출력하는 메소드작성

 

입력 예]

인스턴스 변수를 생성하고 “1공장5를 대입한다.

메소드를 호출하여 생산량을 대입한다.

메소드를 호출하여 출력한다.

 

인스턴스 변수를 생성하고 “2공장10를 대입한다.

메소드를 호출하여 생산량을 대입한다.

메소드를 호출하여 출력한다.

 

인스턴스 변수를 생성하고 “3공장30를 대입한다.

메소드를 호출하여 생산량을 대입한다.

메소드를 호출하여 출력한다.

 

 

출력 예]

1공장의 생산자수는 5명 입니다.

총 생산량은 789이고 평균 생산량은 157.8개 입니다.

 

2공장의 생산자수는 10명 입니다.

총 생산량은 1580이고 평균 생산량은 158.0개 입니다.

 

3공장의 생산자수는 20명 입니다.

총 생산량은 2829이고 평균 생산량은 141.45개입니다.

 

 

 

19. 제일서적에서 대전광역시 서구에서 4개의 컴퓨터학원에 컴퓨터 서적을 납품하고 있다. 각각의 컴퓨터 학원에 1년동안 납품한 컴퓨터 서적들의 대금의 합계를 구하는 프로그램을 작성하시오.

 

) 1공장의 생산자 수는 5명이고 각각의 하루 생산량은 150, 179, 120, 160, 180이다 1공장의 평균 상산량은 157.8개이다.

 

주문수

주문 금액

A컴퓨터학원

5

75000, 132500, 59000, 65000, 183000

B컴퓨터학원

7

56000, 94000, 72000, 80000, 53000, 45000, 95000

C컴퓨터학원

6

70000, 82000, 84000, 56000, 62000, 75000

D컴퓨터학원

10

59000, 70000, 65000, 85000, 100000, 56000, 75000, 45000, 125000

Bookstore 클래스 선언, 거래처, 주문수, 금액, 총금액를 매개변수로 선언, 주문 금액을 입력받아 합계를 계산하는 메소드와 출력하는 메소드작성, 모든 거래처에서 주문한 거래 금액의 총 금액을 출력하는 메소드 작성

 

입력 예]

인스턴스 변수를 생성하고 “A컴퓨터학원5를 대입한다.

메소드를 호출하여 금액을 입력받아 합계를 계산한다.

메소드를 호출하여 출력한다.

 

인스턴스 변수를 생성하고 “B컴퓨터학원7를 대입한다.

메소드를 호출하여 금액을 입력받아 합계를 계산한다.

메소드를 호출하여 출력한다.

 

인스턴스 변수를 생성하고 “C컴퓨터학원6를 대입한다.

메소드를 호출하여 금액을 입력받아 합계를 계산한다.

메소드를 호출하여 출력한다.

 

인스턴스 변수를 생성하고 “D컴퓨터학원10를 대입한다.

메소드를 호출하여 금액을 입력받아 합계를 계산한다.

메소드를 호출하여 출력한다.

 

메소드를 호출하여 모든 거래처의 주문금액의 총 금액을 출력한다.

 

 

출력 예]

A컴퓨터학원의 주문횟수는 5번입니다.

총 주문금액은 514500원입니다.

 

B컴퓨터학원의 주문횟수는 7번입니다.

총 주문금액은 495000원입니다.

 

C컴퓨터학원의 주문횟수는 6번입니다.

총 주문금액은 429000원입니다.

 

D컴퓨터학원의 주문횟수는 10번입니다.

총 주문금액은 680000원입니다.

 

모든 거래처의 총 주문금액은 2118500원입니다.

'프로그램언어 > 자바' 카테고리의 다른 글

클래스3  (0) 2021.04.12
클래스2  (0) 2021.04.12
스윙 메뉴만들기  (0) 2021.01.29
스레드2  (0) 2020.11.15
스레드1  (1) 2020.11.15