///////
Search

클래스와 객체

작성 날짜
2022/09/21 16:30
작성자
박태근

형변환 복습

사칙연산 : 연산이 일어날때 데이터타입이 다르면 한곳에 데이터 타입을 맞추어서 연산함.
*소수점을 보전하는 방향으로 변환됨

선택문

if 문

if(true or false) { 조건 true 시 실행되는 영역 }
Java
복사
if문에 속한 문장이 한 줄인 경우 중괄호 생략 가능

if else문

if(true or false) { 조건 true 시 실행되는 영역 } else { 조건 false 시 실행되는 영역 }
Java
복사
if문과 마찬가지로 if절 또는 else 절에 속한 문장이 하나일 경우 중괄호 생략 가능

switch 문

public static void main(String[] arg) { int n= 3; switch(n) { case 1; system.out.println("simple Java"); case 2; system.out.println("Funny Java"); case 3; system.out.println("Fantastic Java"); default; system.out.println("The best programming language"); } system.out.println("Do you like Java?); } }
Java
복사
실행결과는?
스위치문에 기본은 break;가 있어야함

Ex) switch문 예제 (월 입력받고 계절 출력하기)

import java.util.Scanner; public class EX_0922_01 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("몇월인가요?"); int month = sc.nextInt(); switch(month) { case 12 : case 1 : case 2 : System.out.println("겨울입니다"); break; case 3 : case 4 : case 5 : System.out.println("봄입니다"); break; case 6 : case 7 : case 8 : System.out.println("여름입니다."); break; case 9 : case 10 : case 11 : System.out.println("가을입니다."); break; default : System.out.println("잘못입력하셨습니다."); } } }
Java
복사

Ex) 가위바위보 시스템

import java.util.Scanner; public class ex_0922_02 { public static void main(String[] args) { System.out.println("가위 바위 보를 입력하세요!"); System.out.println("가위 : 0"); System.out.println("바위 : 1"); System.out.println("보 : 2"); Scanner sc = new Scanner(System.in); int value = sc.nextInt(); int random = (int)(Math.random()*3); while(true) { if(value == 0) { if(random == 0) { System.out.println("비겼습니다"); break; } else if(random == 1) { System.out.println("패배했습니다."); break; } else if(random == 2) { System.out.println("이겼습니다."); break; } } if(value == 1) { if(random == 1) { System.out.println("비겼습니다"); break; } else if(random == 2) { System.out.println("패배했습니다."); break; } else if(random == 0) { System.out.println("이겼습니다."); break; } } if(value == 2) { if(random == 2) { System.out.println("비겼습니다"); break; } else if(random == 0) { System.out.println("패배했습니다."); break; } else if(random == 1) { System.out.println("이겼습니다."); break; } } } } }
Java
복사
나와 같은데, 엄청 간단한 코드 (한번 이해해보자)
이건 강사님 소스코드

클래스와 객체

객체 지향 언어 : JAVA
캡슐화
상속
추상화
정보 은닉
클래스 정의
기본구조 : 변수(필드)와 함수(메소드)가 존재.
.class 파일 = 0101덩어리
객체 (=인스턴스)
class가 두 개, Circle / CircleTest
메인 메소드를 찾아 가장 먼저 실행되게 됨.
Circle obj; ⇒ Circle은 데이터 타입(객체선언이라고도함) / obj는 변수명
→ 그렇다면 용량을 얼마나 잡는 것인가? 4byte
⇒ JVM은 32비트 시스템이기 때문에 4byte를 잡음. (솔직히 이해안감)
→ 메모리 안에 들어가는 내용은 무엇인가? 4byte 주소값이 들어간다
obj = new Circle(); ⇒ 메모리에 값을 올리는 역할?

참조형(reference type)의 선언 및 메모리

메소드 관련 예제 -1

public static void main(String[] args) { System.out.println("프로그램의 시작"); hiEveryone(12); hiEveryone(13); System.out.println("프로그램의 끝"); } public static void hiEveryone(int age) { System.out.println("좋은 아침입니다."); System.out.println("제 나이는 " + age + "세 입니다."); }
Java
복사
public static 함수를 불러오기 위함?
int age : 파라미터
hiEveryone(12) ⇒ 12가 메모리에 올라감 hiEveryone 메소드에서 사용되고 휘발됨

미니프로젝트 (이해못함)

학생을 나타내는 클래스 Student를 만들어보자. 학생은 이름(name)과 학번(rollno), 나이를 가진다. Student 클래스를 작성하고 객체를 생성하여 테스트하라. *출력예시 학생의 이름 : Kim 학생의 학번 : 20180001 학생의 나이 : 20
Java
복사
class Student { String name; String id; int age; public String getName() { return name; } public String getId() { return id; } public int getAge() { return age; } } public class ex_0922_6 { public static void main(String[] args) { Student student = new Student(); student.name = "Hwang"; student.id = "20220001"; student.age = 20; System.out.println("학생의 이름 : " + student.getName()); System.out.println("학생의 학번 : " + student.getId()); System.out.println("학생의 나이 : " + student.getAge()); } }
Java
복사
Rectangle rec = new Reactangle(); rec.setWidth(10); rec.setHeight(10);
Java
복사
class Rectangle { private int width; private int height; public void setWidth(int width) { this.width = width; } public void setHeight(int height) { this.height = height; } public int getArea() { return this.width * this.height; } } public class ex_0922_7 { public static void main(String[] args) { Rectangle rec = new Rectangle(); //객체생성 rec.setWidth(10); rec.setHeight(10); System.out.println(rec.getArea()); } }
Java
복사
this.width = witdth 라고 쓸경우 this. 는 다르다고 구분지어주는 것
1.
클래스명정하기
2.
변수명정하기
3.
함수정하기
4.
함수 : 자기가 가지고있는 변수를 컨트롤 하는 것
오늘 기억할 것
if문 안에 if 문은 구조적으로 else if 로 바꿀 수 있다. 되도록 if문 안에 if문은 쓰지 말라.
int[] 배열이라고 해서 int형 데이터타입이 아니라, 참조형 데이터 타입이다.
Scanner 사용시 주의사항!
디스코드에 코드 올리는 방법
궁금증
main 함수가 String[] args 파라미터를 받는 이유?

과제

1.
Grade 클래스를 만들고, 국어, 영어 수학을 입력 받는 기능을 만들고 평균이 90 수 우 미 양 가 를 출력하는 프로그램을 만드시오
위의 것을 테스트 하는 GradeTest 클래스를 만드시오.
3.
업 다운게임을 리펙토링해서 class로 만들어서 테스트클래스 따로 만들어라?