240122 자바 교육 day1

gununoo·2024년 1월 22일
2

Java

목록 보기
1/4
post-thumbnail
  • 프로젝트 생성 -> jre 설정
  • jre 추가
  • Standard VM 선택
  • 경로 선택
  • 적용
  • JavaSE-1.8 선택 후 완료
  • 패키지 생성
  • 클래스 생성

  • ctrl + F11로 실행
  • F11키로 디버그 모드
  • F6키로 한 줄씩 실행

Scanner

package basic;

import java.util.Scanner;

public class LogicControl {
	public static void main(String[] args) {
		//-----------------------------------------
		Scanner scan = new Scanner(System.in);
		
		System.out.println("첫번째 정수 입력: ");
		int num1 = scan.nextInt();
		
		System.out.println("두번째 정수 입력: ");
		int num2 = scan.nextInt();
		//-----------------------------------------
		
		int result = 0;
		result = num1 + num2;
		System.out.println("덧셈결과: " + result);
	}
}

  • 개선 1: 음수를 입력 받는 경우 처리
package basic;

import java.util.Scanner;

public class LogicControl {
	public static void main(String[] args) {
		//-----------------------------------------
		Scanner scan = new Scanner(System.in);
		
		System.out.println("첫번째 정수 입력: ");
		int num1 = scan.nextInt();
		if (num1 < 0) { 
			num1 = 0;
		}
		
		System.out.println("두번째 정수 입력: ");
		int num2 = scan.nextInt();
		if (num2 < 0) { 
			num2 = 0;
		}
		//-----------------------------------------
		
		int result = 0;
		result = num1 + num2;
		System.out.println("덧셈결과: " + result);
	}
}


for문, 배열

package basic;

import java.util.Scanner;

public class LogicControl2 {
	public static void main(String[] args) {
		int[] num = new int[2]; // 배열의 크기: 2 
		
		//-----------------------------------------
		Scanner scan = new Scanner(System.in);
		
		for (int i=0; i<2; i++) {
			System.out.println(i+"번째 양의 정수 입력: ");
			num[i] = scan.nextInt();
			if (num[i] < 0) { 
				num[i] = 0;
			}
		}
		//-----------------------------------------
		
		int result = 0;
		for (int i=0; i<2; i++) {
			result += num[i]; 
		}
		
		System.out.println("덧셈결과: " + result);
		System.out.println("프로그램 종료");
	}
}
  • 개선 1: for문 줄이기
package basic;

import java.util.Scanner;

public class LogicControl2 {
	public static void main(String[] args) {
		int[] num = new int[2]; // 배열의 크기: 2 
		int result = 0;
		//-----------------------------------------
		Scanner scan = new Scanner(System.in);
		
		for (int i=0; i<2; i++) {
			System.out.println(i+"번째 양의 정수 입력: ");
			num[i] = scan.nextInt();
			if (num[i] < 0) { 
				num[i] = 0;
			}
			result += num[i];
		}
		//-----------------------------------------
		
		System.out.println("덧셈결과: " + result);
		System.out.println("프로그램 종료");
	}
}
  • 1부터 20까지의 정수 중, 2 또는 3의 배수가 아닌 수의 총합
package basic;

public class LogicControl3 {
	public static void main(String[] args) {
		int result = 0;
		//-----------------------------------------
		
		for (int i=0; i<=20; i++) {
			if (i%2 == 0 || i%3 == 0) { 
				continue;
			}
			result += i;
		}
		//-----------------------------------------
		
		System.out.println("덧셈결과: " + result);
		System.out.println("프로그램 종료");
	}
}
  • 소수인지 아닌지 판별
package basic;

import java.util.Scanner;

public class LogicControl4 {
	public static void main(String[] args) {
		int result = 0;
		//-----------------------------------------
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();
		boolean isPrime = true;
		
		if (num < 2) { 
			isPrime = false;
		}
		else { 
			for (int i=2; i<Math.sqrt(num); i++) {
				if (num%i == 0) { // 나누어지면 소수가 아님 
					isPrime = false;
					break;
				}
			}
		}
		
		if (isPrime) { 
			System.out.println("소수");
		}
		else {
			System.out.println("소수가 아님");
		}
	}
}

객체지향

  • 관리대상들: 객체 (Object)
    객체는 '집'으로 비유할 수 있습니다. 집은 여러 가지 요소들(창문, 문, 벽 등)과 기능(사람을 보호하고, 사생활을 유지하는 등)을 가지고 있습니다. 프로그래밍에서 객체도 이와 같이 여러 속성과 기능을 가집니다.

  • 개체(앤티티): 관리해야될 공통 속성(특성) + 메소드 선택 정의
    개체 또는 앤티티는 '특정한 집'을 의미합니다. 예를 들어, 빨간색 지붕이 있는 두 층짜리 집이라고 할 수 있습니다. 이 집의 특성(빨간색 지붕, 두 층)과 기능(난방, 냉방)은 프로그래밍에서 개체의 속성과 메소드에 해당합니다.

  • 선체(자바클래스): 캡슐화(속성보호 비노출 대신에 메소드 노출)
    클래스는 '집의 설계도'로 생각할 수 있습니다. 설계도는 집이 어떻게 생겼는지, 어떤 기능을 가지고 있는지를 정의합니다. 캡슐화는 이 설계도의 일부 세부사항을 숨기는 것과 같습니다. 예를 들어, 전기 배선이나 배관 시스템은 일반 사람들이 알 필요 없는 정보이므로, 설계도에서 이 부분을 숨길 수 있습니다. 대신, 전등 스위치나 수도꼭지와 같은 사용자 인터페이스는 노출됩니다.

  • 실체(자바인스턴스): 자신의 고유한 속성 실값을 저장. 외부 객체는 실체(자바인스턴스)들을 생성해서 노출된 메소드를 사용(객체명.속성명). 단, 외부 객체가 메인클래스인 경우 자신의 인스턴스를 비생성.
    인스턴스는 '실제로 지어진 집'으로 비유할 수 있습니다. 설계도를 바탕으로 실제로 지어진 집은 그 설계도의 속성과 기능을 구현한 것입니다. 이 집에서 사람들은 설계도에서 정의된 기능(전등 켜기, 난방 조절 등)을 실제로 사용할 수 있습니다.


  • 새 패키지 생성
package oop;

class Person {
	public int age;
	public long height;
	public float weight;
}

public class PersonTestMain {
	public static void main(String[] args) {
			Person brother = new Person();
			
			brother.age = 100;
			brother.height = 170L;
			brother.weight = 67.0F;
			System.out.println("age : " + brother.age);
			System.out.println("height : " + brother.height);
			System.out.println("weight : " + brother.weight);
		}
}

getters, setters

  • getters, setters 생성


  • private로 하면 참조 불가
  • set을 통해 값 지정
  • get을 통해 값 참조
  • 결과

개발패턴

M(모델: 데이터객체) - C(컨트롤러) - V(뷰: 화면객체, 모델접근)

멤버, 생성자, 메서드, 객체

package oop;

class Student {
	// 멤버 변수 선언 
	private int kor; // 국어점수 
	private int eng; // 영어점수 
	private int math; // 수학점수 
	
	
    // 생성자
    public Student(int kor, int eng, int math) {
        this.kor = kor;
        this.eng = eng;
        this.math = math;
    }
    
    
    // 총점을 반환하는 메서드
    public int getTotal() {
        return kor + eng + math;
    }

    // 평균을 반환하는 메서드
    public double getAverage() {
        return getTotal() / 3.0;
    }
}


public class StudentTestMain {
	public static void main(String[] args) {
        // Student 객체 생성
        Student student = new Student(90, 80, 70);

        // 총점과 평균을 계산하여 출력
        System.out.println("총점: " + student.getTotal());
        System.out.println("평균: " + student.getAverage());
    }
}


  • StudentTestMain.java
package oop;

public class StudentTestMain {
	public static void main(String[] args) {
        // Student 객체 생성
        Student student = new Student("홍길동", 1, 100, 60, 76);
        
        System.out.println(student.info());
    }
}
  • Student.java
package oop;

public class Student {
	// 멤버 변수 선언 
	private String name; 
	private int num; 
	private int kor; // 국어점수 
	private int eng; // 영어점수 
	private int math; // 수학점수 
	
	
    // 생성자    
    public Student(String name, int num, int kor, int eng, int math) {
    	this.name = name; 
    	this.num = num;
        this.kor = kor;
        this.eng = eng;
        this.math = math;    	
    }
    
    
    // 총점을 반환하는 메서드
    public int getTotal() {
        return kor + eng + math;
    }

    // 평균을 반환하는 메서드
    public double getAverage() {
        return getTotal() / 3.0;
    }
    
    // 정보를 반환하는 메서드
    public String info() { 
    	return num + "," + getAverage();
    }
}
profile
take a look

3개의 댓글

comment-user-thumbnail
2024년 1월 22일

공부 열심히 하시네요 ! !

1개의 답글
comment-user-thumbnail
2024년 1월 30일

조금 더 디테일한 정리 부탁해요

답글 달기