728x90
반응형

<오늘의 학습>

1. 생성자(생성자 메소드)

 

 

1. 생성자(생성자 메소드)

  1. 생성자 이름은 클래스이름과 같다
  2. 생성자는 리턴형이 없다. 객체 초기화가 목적이다.
  3. 생성자는 인수를 갖는다. 오버로드가 가능하다.
  4. 생성자는 객체 생성시 호출된다.
  5. 생성자를 넣지 않으면 내부적으로 디폴트 생성자가 만들어진다.
  6. 인자(매개변수)가 있는 생성자를 넣으면, 디폴트 생성자는 만들어지지 않는다.
  7. this:자신을 지칭하는 객체. 지역변수를 전역변수 값에 저장할 때 주로 사용한다. ex) this.전역변수=지역변수;
    this():자신의 클래스 안의 생성자를 호출
  8. super : 상위 (수퍼)클래스 객체를 말함. 
    super() : 상위 클래스 생성자 호출. 

 

 

클래스 상속, 인터페이스 상속

class 파생클래스 extends 수퍼클래스 implements 인터페이스,인터페이스,인터페이스{
//변수=필드

//생성자

//메서드

}


1. 클래스는 다중 상속이 불가능하다.
2. 인터페이스는 다중 상속이 가능하다.

3. 클래스 extends 클래스 //클래스가 클래스를 상속받을 때
4. 인터페이스 extends 클래스 //인터페이스가 클래스를 상속받을 때
5. 클래스 implements 인터페이스 //클래스가 인터페이스를 상속

6. 상위 클래스 변수로 하위객체 처리, 자동 형변환과 유사하다.
List list = new ArrayList();
Map mpa = new HashMap();

 

 

 


2023년 5월 22일 월요일

<7일차 수업 후기>

오늘은 지금까지 배운 내용에 대해 간단한 쪽지 시험을 보았다.

매일 배운 내용을 정리하며 복습하다보니 갑작스러운 시험도 어렵게 느껴지지 않았다. 앞으로도 꾸준히 열심히 공부하자!

728x90
반응형
728x90
반응형

1. equals 이용하여 판별

2. 문자를 정수형으로 변환하여 판별

3. switch-case문을 이용하여 판별

 

 

문제

881219-1055910
881219-2132154
221219-3565456
221219-4132547
  • 주민번호를 입력받아 남자인지 여자인지 판정하여 출력하시오. (예제는 임의로 입력된 값이다.)
  • 사용자가 직접 13자리 주민번호를 입력한다. 이 때, '-'를 포함하여 입력한다.
  • 위에 예시를 입력하고, 입력 받은 주민번호를 이용해 남자인지 여자인지 구분하여 출력한다. 

 

 

1. equals 이용하여 판별

		Scanner scan=new Scanner(System.in);

		System.out.print("주민번호를 입력하세요 >> ");
		String num = scan.next();

		int idx=num.indexOf("-")+1;
		String str=num.substring(idx,idx+1);

		//str값(1,2,3,4)에 따라 남자/여자를 구분한다. 문자열은 (str == "1") 대신 equals를 이용해야 정확하게 값이 나온다.
		if(str.equals("1") || str.equals("3"))
			System.out.println("남자입니다.");
		else if(str.equals("2") || str.equals("4"))
			System.out.println("여자입니다.");
		else
			System.out.println("다시 입력해주세요.");

 

 

 

2. 문자를 정수형으로 변환하여 판별

		//str의 인덱스 값을 숫자로 변환하여 비교
		int par = Integer.parseInt(str);

		System.out.println("주민번호 첫 번째 자리 : "+par);
		if(par==1 || par==3)
			System.out.println("남자입니다.");
		else if(par==2 || par==4)
			System.out.println("여자입니다.");
		else
			System.out.println("다시 입력해주세요.");

 

 

 

3. switch-case문을 이용하여 판별

		//switch - case 문을 이용하여 출력
		switch(str){
		case "1":
		case "3":
			System.out.println("남자입니다.");
			break;
		case "2":
		case "4":
			System.out.println("여자입니다.");
			break;
		default:
			System.out.println("다시 입력해주세요.");
		}

 

 

 

출력 결과

주민번호를 입력하세요 >> 881219-1055910
남자입니다.
주민번호를 입력하세요 >> 881219-2132154
여자입니다.
주민번호를 입력하세요 >> 221219-3565456
남자입니다.
주민번호를 입력하세요 >> 221219-4132547
여자입니다.
728x90
반응형
728x90
반응형

문제 1

    *
   **
  ***
 ****
*****
  • 반복문을 이용하라.
  • ' '(공백)과 '*'(별)을 이용해 위 그림과 같이 출력하라.

 

 

▶ 코드

		int max=5;
		int row,column;
        
		for(row=0;row<max;row++){
			for(column=0;column<(max-row)-1;column++){
				System.out.print(" ");
			}
			
			for(column=0;column<row+1;column++){
				System.out.print("*");
			}
			System.out.println();//줄바꿈
		}

 

▶ 출력 결과

    *
   **
  ***
 ****
*****

 

 

 

문제 2

     *
    ***
   *****
  *******
 *********
***********
 *********
  *******
   *****
    ***
     *
  • 반복문을 이용하라.
  • ' '(공백)과 '*'(별)을 이용해 위 그림과 같이 출력하라.

 

 

▶ 코드

		int i,j,k;
		int max=5;//5줄을 기준으로 출력하기 위해 미리 선언
        
		//5줄 출력
		for(i=0;i<max;i++){//0~4
			for(j=0;j<max-i;j++){
				System.out.print(" ");
			}
			
			for(k=0;k<i*2+1;k++){
				System.out.print("*");
			}
			System.out.println(); //줄바꿈
		}////out_for1
		
		//6줄 출력
		for(i=max;i>=0;i--)//5~0
		{
			for(j=0;j<max-i;j++){
				System.out.print(" ");
			}
			
			for(k=0;k<i*2+1;k++){
				System.out.print("*");
			}
			System.out.println(); //줄바꿈
		}//out_for2

 

▶ 출력 결과

     *
    ***
   *****
  *******
 *********
***********
 *********
  *******
   *****
    ***
     *

 

 

 

문제 3

***** *****
****   ****
***     ***
**       **
*         *
*         *
**       **
***     ***
****   ****
***** *****
  • 반복문을 이용하라.
  • ' '(공백)과 '*'(별)을 이용해 위 그림과 같이 출력하라.

 

 

▶ 코드

		int max=5;
		int row, column;
		
		//위
		for(row=0;row<max;row++){
			for(column=0;column<max-row;column++){
				System.out.print("*");
			}//inner_for1
			
			for(column=0;column<(row*2)+1;column++){
				System.out.print(" ");
			}//inner_for2
			
			for(column=0;column<max-row;column++){
				System.out.print("*");
			}//inner_for3
	
			System.out.println(); //줄바꿈
		}//out_for1
		
		//아래
		for(row=max-1;row>=0;row--){
			for(column=0;column<max-row;column++){
				System.out.print("*");
			}//inner_for1
			
			for(column=0;column<(row*2)+1;column++){
				System.out.print(" ");
			}//inner_for2
			
			for(column=0;column<max-row;column++){
				System.out.print("*");
			}//inner_for3
			
			System.out.println(); //줄바꿈
		}//out_for2

 

▶ 출력 결과

***** *****
****   ****
***     ***
**       **
*         *
*         *
**       **
***     ***
****   ****
***** *****

 

 

 

728x90
반응형
728x90
반응형

1. if문 이용

2. switch-case문 이용

 

문제

<입력값:출력>
90~100:A
80~89:B
70~79:C
60~69:D
0~59:F
  • 점수를 입력 받아서 학점을 구하시오.
  • 사용자가 직접 점수를 입력한다. (import java.util.Scanner; 이용)
  • 입력한 값이 100보다 크거나 0보다 작을 때는 결과가 출력되지 않는다.
  • 90을 입력하면 A값이 출력된다. 
  • 경곗값 분석을 이용해 테스트를 해 보아라.

 

 

1. if문 이용

		Scanner scan = new Scanner(System.in);
		int num=0;
		char grade=' '; //변수선언 및 초기화. 학점을 넣을 변수

		System.out.print("점수를 입력하세요 >> ");
		num = scan.nextInt();

		//grade 값 삽입
		if(num>100 || num<0) //100보다 크거나 0보다 작은 숫자를 입력했을 때
			System.out.println("점수를 잘못 입력하셨습니다.\n0~100 사이의 점수를 다시 입력해주세요.");
		else{	//100~1 사이의 숫자
			if(num >= 90){	//이미 100이하의 값임을 확인했기 때문에 90이상인 값을 구한다.
				grade='A';
			}
			else if(num >= 80){	//위의 조건을 만족하지 못해서 다음 조건문으로 내려왔기 때문에 이미 90이상이 아닌 것을 확인했다. 즉, 89~80까지의 값
				grade='B';
			}
			else if(num >= 70){	//79~70
				grade='C';
			}
			else if(num >= 60){	//69~60
				grade='D';
			}
			else{	//나머지 값. 59~0
				grade='F';
			}
			System.out.printf("학점 : %c",grade);	//출력
		}//else_end
		

		scan.close(); //close를 해주지 않아도 오류가 나지는 않으나, OS 자원을 되돌리기 위해 close()

 

 

 

2. switch-case문 이용

		Scanner scan = new Scanner(System.in);
		int score=0;
		char grade=' ';

		System.out.printf("점수를 입력하시오 >> ");
		score = scan.nextInt();

		if(score>100 || score<0)
			System.out.println("점수를 잘못 입력하셨습니다.\n0~100 사이의 점수를 다시 입력해주세요.");
		else{
			switch(score/10){ //몫을 구하는 switch문
			case 10:	//100 (100/10 = 10)
			case 9:		//99~90 (99/9 = 9)
				grade='A';	//100~90을 입력받았을 때 출력
				break;	//switch문 탈출
			case 8:
				grade='B';
				break;
			case 7:
				grade='C';
				break;
			case 6: 
				grade='D';
				break;
			default:
				grade='F';
			}
			System.out.printf("학점 : %c", grade); //출력
		}//else_end

		scan.close();

 

 

 

출력 결과

점수를 입력하세요 >> 101
점수를 잘못 입력하셨습니다.
0~100 사이의 점수를 다시 입력해주세요.
점수를 입력하세요 >> -1
점수를 잘못 입력하셨습니다.
0~100 사이의 점수를 다시 입력해주세요.
점수를 입력하시오 >> 100
학점 : A
점수를 입력하세요 >> 90
학점 : A
점수를 입력하세요 >> 59
학점 : F
점수를 입력하세요 >> 0
학점 : F

 

 

 

 

 

 

 

728x90
반응형
728x90
반응형

<오늘의 학습>

1. 객체 지향 프로그래밍

2. 클래스

3. 메소드

4. 인스턴스

 

 

1. 객체 지향

1) 객체 지향 이란?

  • 실제 세계를 모델링하여, 소프트웨어를 개발하는 방법

 

 

2) 객체 지향 프로그래밍(OOP;Object-Oriented Programming) 이란?

  • 데이터와 절차를 하나의 덩어리(객체)로 묶어서 생각하는 방법

 

 

3) 절차 지향 프로그래밍(procedural programming) 이란?

  • 문제를 해결하는 절차를 중요하게 생각하는 방법

 

 

4) 객체 지향의 5대 특징

  1. 캡슐화: 클래스를 묶는 것
  2. 추상성: 복잡한 것을 단순화하는 것
     - 복합한 것:클래스 만드는 쪽
     - 단순화:클래스 사용자 입장
  3. 다형성:OverLoading(오버로딩, 생성자 이름 중복), OverRiding(오버라이딩, 메소드 내용 재정의)
  4. 상속성:모든 자바클래스는 상속관계로 이루어져 있다.
  5. 정보은닉:외부(다른 객체)에서 객체의 내부(데이터)를 들여다볼 수 없다.

 

 

5) 오버로딩과 오버라이딩

  1. 오버로딩 : 동일한 메소드명을 가지더라도 매개변수 자료형이나 갯수가 다르다면, 하나의 클래스 안에서 동일한 메소드명을 여러 개 사용할 수 있다. 리턴형은 조건에 포함되지 않는다.
  2. 오버라이딩 : 상속받은 메소드의 내용을 재정의하는 것이다. 오버로딩과 달리 리턴형, 메소드 이름, 매개변수는 반드시 같아야 한다

접근제한자는 상위와 같거나 더 넓은 것을 사용할 수 있다. 상위 접근제한자가 protected이면 public도 쓸 수 있다.

 

 

6) 접근 제한자

  1. public : 패키지가 다르고, 상속받지 않아도 사용 가능
  2. private : 자신의 클래스 내에서만 접근가능(사용 가능)
  3. protected : 패키지가 다르더라도 상속받으면 사용 가능
  4. default(생략):같은 패키지 내에서만 사용 가능

 

 

 

2. 클래스

▶ 변수에 값을 대입하는 연산자

 

 

 

-클래스는 레퍼런스 자료형이다.
-ex) 클래스 사용
-클래스이름 레퍼런스변수 = new 클래스이름(); // 객체생성 (heap영역의 메모리를 할당받는다.)
-클래스 이름 레퍼러스변수;//선언만 한 상태.
 레퍼런스변수=new 클래스이름;// new를 이용해야 메모리를 할당받음
 객체.메소드();

-new 클래스 이름();//객체 생성. 클래스 이름=생성자이름
-new 클래스이름().메소드();//객체 생성, 메소드 호출

 

Test01.java : 자료 설계
Test01.class : 레퍼런스 자료형
Test01 test01=new Test01(); //객체 생성

 

클래스 상속, 인터페이스 상속

class 파생클래스 extends 슈퍼클래스 implements 인터페이스, 인터페이스, 인터페이스{
//변수=필드

//생성자

//메소드

}


1. 클래스는 다중 상속이 불가능하다.
2. 인터페이스는 다중 상속이 가능하다.
3. 클래스 extends 클래스 //클래스가 클래스를 상속받을 때
4. 인터페이스 extends 클래스 //인터페이스가 클래스를 상속받을 때
5. 클래스 implements 인터페이스 //클래스가 인터페이스를 상속
6. 상위 클래스 변수로 하위객체 처리, 자동 형변환과 유사하다.
List list = new ArrayList();
Map mpa = new HashMap();

 

 

3. 메소드

▶ 변수에 값을 대입하는 연산자

 

 

4. 인스턴스

▶ 변수에 값을 대입하는 연산자

 

 

 


2023년 5월 19일 금요일

<6일차 수업>

728x90
반응형

'HRD_훈련 > JAVA' 카테고리의 다른 글

[JAVA] 추상 클래스와 인터페이스 (8일차)  (0) 2023.05.23
[JAVA] 생성자와 상속 (7일차)  (0) 2023.05.22
[JAVA] 배열과 Random (5일차)  (0) 2023.05.19
[JAVA] 반복문 (4일차)  (0) 2023.05.18
[JAVA] 조건문 (4일차)  (0) 2023.05.17

+ Recent posts