230327 풀스택 18일차 - 배운내용 복습, 명언 앱 제작 시작

황인성·2023년 3월 27일
0

오늘은 이제까지 배운내용 복습 후 명언 앱 진입할 것

생성자함수(기본 개념)

class Main {
	public static void main(String[] args) {
		new 사람();
		// 출력 : 사람이 태어났습니다.
		new 사람(10);
		// 출력 : 태어나서부터 10살인 사람이 태어났습니다.
		new 사람(20);
		// 출력 : 태어나서부터 20살인 사람이 태어났습니다.
	}
}
class 사람 {
	int 나이;
	사람 () {
		System.out.println("사람이 태어났습니다.");
	}
	사람 (int  나이) { // 오버라이딩
		this.나이 = 나이;
		System.out.println("태어나서부터 " + 나이 + "살인 사람이 태어났습니다.");
	}
}

메소드 오버라이딩

class Main {
	public static void main(String[] args) {
		계산기 a계산기 = new 계산기();
		System.out.println(a계산기.더하기(10, 20));
		// 출력 : 30
		System.out.println(a계산기.더하기(10, 20, 30));
		// 출력 : 60
		System.out.println(a계산기.더하기(10.5, 20, 30));
		// 출력 : 60.5
	}
}
class 계산기 {
	int 더하기 (int 숫자1, int 숫자2) {
		return 숫자1 + 숫자2;
	}
	int 더하기 (int 숫자1, int 숫자2, int 숫자3) {
		return 숫자1 + 숫자2 + 숫자3;
	}
	double 더하기 (double 숫자1, int 숫자2, int 숫자3) {
		return 숫자1 + 숫자2 + 숫자3;
	}
}

생성자함수의 존재유무

class Main {
	public static void main(String[] args) {
		new 사과();
		new 포도();
		new 사람("홍길동");
		new 사람();
	}
}
class 사과 {
}
class 포도 {
}
class 사람 {
	사람 (String 이름) {
	}
	사람 () {
	}
}

생성자 연쇄호출

//code.oa.gg/java8/936
// 문제 : 아래가 실행되도록 해주세요.
class Main {
	public static void main(String[] args) {
		System.out.println("== 사람객체 생성시작 ==");
		new 사람();
		System.out.println("== 사람객체 생성끝 ==");
		System.out.println("== 청둥오리객체 생성시작 ==");
		new 청둥오리();
		System.out.println("== 청둥오리객체 생성끝 ==");
		/* 출력
== 청둥오리객체 생성시작 ==
생물이 생성되었습니다.
동물이 생성되었습니다.
오리가 생성되었습니다.
청둥오리 생성되었습니다.
== 청둥오리객체 생성끝 ==
*/
	}
}
class 생물 {
	생물() {
		// 이 함수는 부모 클래스 생성자를 자동으로 호출합니다.
		System.out.println("생물이 생성되었습니다.");
	}
}
class 동물 extends 생물 {
	동물() {
		// super(); // 부모 클래스의 생성자를 호출합니다. 생략가능합니다.
		// 이 함수는 부모 클래스 생성자를 자동으로 호출합니다.
		System.out.println("동물이 생성되었습니다.");
	}
}
class 사람 extends 동물 {
	사람() {
		super(); // 부모 클래스의 생성자를 호출합니다.
		// 이 함수는 부모 클래스 생성자를 자동으로 호출합니다.
		System.out.println("사람이 생성되었습니다.");
	}
}
class 오리 extends 동물 {
	오리 () {
		System.out.println("오리 생성되었습니다.");
	}
}
class 청둥오리 extends 오리 {
	청둥오리 () {
		System.out.println("청둥오리 생성되었습니다.");
	}
}

super키워드 활용예시

// 문제 : 아래가 오류없이 실행되도록 해주세요.
// 조건 : 사람 클래스만 수정할 수 있습니다.
class Main {
	public static void main(String[] args) {
		new 사람();
	}
}
class 동물 {
	동물(String 이름) {
		System.out.println("동물(String 이름) 실행됨!");
		System.out.println("이름 : " + 이름);
	}
	동물(String 이름, int 나이) {
		System.out.println("동물(String 이름, int 나이) 실행됨!");
		System.out.println("이름 : " + 이름);
		System.out.println("나이 : " + 나이);
	}
}
class 사람 extends 동물 {
	사람 () {
		super("홍길동", 21);
	}
}

private 형태와 기능 예시

//code.oa.gg/java8/1069
// 문제 : 오류를 수정하세요.
class Main {
	public static void main(String[] args) {
		사람 a사람 = new 사람();
		a사람.id = 20;
		System.out.println("제 번호는 " + a사람.id + " 입니다.");
		// 출력 : 제 번호는 20 입니다.
	}
}
class 사람 {
	// private => 외부로 공개되지 않는다., 리모콘에 노출되지 않는다.
	// getter, setter로만 접근 가능하다.
	public int id; // private int id;일땐 외부로 공개되지 않는다.
}

getter, setter

//code.oa.gg/java8/1069
// 문제 : 오류를 수정하세요.
class Main {
	public static void main(String[] args) {
		사람 a사람 = new 사람();
		//		a사람.id = 20;
		a사람.setId(20);
		System.out.println("제 번호는 " + a사람.getId() + " 입니다."); // getId()는 리턴값으로 값을 내놔야 하기 때문에 메서드에 리턴으로 출력해야함
		// 출력 : 제 번호는 20 입니다.
	}
}
class 사람 {
	// private => 외부로 공개되지 않는다., 리모콘에 노출되지 않는다.
	// getter, setter로만 접근 가능하다.
	private int id; // private int id;일땐 외부로 공개되지 않는다.
	void setId(int id) {
		this.id = id; // setter함수는 세팅하는 값.
	}
	int getId() {
		return this.id;
	}
}

예외처리 기초

class Main {
	public static void main(String[] args) {
		int rs = 계산기.나누다(10, 0);
		System.out.println(rs);
	}
}
class 계산기 {
	static int 나누다(int a, int b) {
		int rs = 0;
		try {
			rs = a / b; // 문제가 없으면 try영역에서 로직이 마무리되고 return함.
		}
		catch ( ArithmeticException e ) {
			rs = 0; // 문제가 있다면 catch영역에서 처리를 함.
		}
		return rs;
	}
}

throws

class Main {
	public static void main(String[] args) {
		try { 
			int rs = 계산기.나누다(10, 0);
			System.out.println(rs);
		}
		catch ( ArithmeticException e ) {
			System.out.println("0으로 나눌 수는 없습니다. ㅠㅠ");
		}
		catch ( Exception e ) {
			System.out.println("알수 없는 에러가 발생하였습니다.");
		}
	}
}
class 계산기 {
	static int 나누다(int a, int b) throws ArithmeticException { // throws를 사용하면 명확하게 사용자 정의로 에러를 처리하겠다 라는 뜻.
		// 그러니까, 위에서 catch로 잡은 에러의 케이스를 명시해줘서 해당 에러가 나오면 throws에서 정의한대로 처리하겠다는 뜻.
		int rs = a / b;
		return rs;
	}
}

throws 예시

class Main {
	public static void main(String[] args) {
		int[] datas = new int[2];
		// ArrayIndexOutOfBoundsException e
		// System.out.println("이런.. 오류가 발생했군요.");
		try {
			work(datas);
		}
		catch (ArrayIndexOutOfBoundsException e) { // 'e'는 error event에 대한 약자임
			// err.를 써서 상세출력도 해줄 수 있음.
			System.out.println("이런.. 오류가 발생했군요.");
		}
	}
	static void work(int[] datas) {
		datas[0] = 10;
		datas[1] = 20;
		datas[2] = 30; // 여기서 자동으로 throw new ArrayIndexOutOfBoundsException(); 이 발생한다.
	}
}

scanner

import java.util.Scanner;

public class Scannertest3 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("숫자 : ");

        sc.nextInt();

        int input = sc.nextInt();

        System.out.printf("입력된 숫자  : %d\n", input);

        sc.close();
    }
}

인텔리제이 세팅

인텔리제이 배포 설정
파일 > 설정 > 빌드, 실행, 배포 > 빌드 도구 > Gradle > 빌드 및 실행 탭 > 빌드 및 실행, 테스트 실행 부분 둘 다 Gradle (디폴트)로 체크

명언프로젝트
새 프로젝트 생성
프로젝트 이름 지정하고
언어 : java
시스템빌드 : Gradle
JDK : corretto-17 아마존
생성

깃 이그노어(git ignore)깃으로 올릴때 불필요한 파일을 막아줌.
intellij랑 java 검색해서 전체선택 하고 복사해서

인텔리제이 와서 프로젝트 이름에다 오른쪽버튼 클릭하고
새 파일 만들기 누르고
.gitignore 만들고 안에 붙여넣기

그다음 깃에 연동
프로젝트에 깃허브 리포지터리 연결

터미널 접속(git bash)

git init (이 폴더를 깃으로 관리해주겠다 선언하는 것)

git remote add origin 리포지터리주소

git remote add origin https://github.com/jhs512/intellij_settings_2023_02_20

git add . (장바구니에 모든 파일을 담는 것)

git commit -m "커밋메세지" (git commit -m "work-1")

git push origin main

profile
문제 해결을 위해 끊임없이 파고드는 걸 좋아합니다.

0개의 댓글