본문 바로가기
코딩/수업 정리

20.12.03 Thu [009]

by 6^6 2020. 12. 3.
728x90
  • 현재 디렉토리
  • 절대경로vs상대경로
  • 패키지
  • Scanner
  • 정보은닉 & 캡슐화
  • 오늘의 문제

 

 

 

현재디렉토리

class AAA{ //클래스를 이렇게 만들 수 있다.
		//안에 변수는 없어도 컴파일은 잘된다
	public ZZZ() {
		System.out.println("AAA생성");
	}
}
class AAA{
	public AAA() {
		System.out.println("생성");
	}
}
public class CCC {
	public static void main(String[] args) {
		AAA aaa = new AAA();
		ZZZ zzz = new ZZZ();
		
	}
}

 

절대경로 VS 상대경로

절대경로 :  자기 고유의 경로

상대경로 : 자기 기준(현재 디렉토리 기준)으로 지정해준 경로

-결국 두개 다 같은 곳으로 경로를 나타냄

 

cd . = 현재 디렉토리

cd .. = 이전 디렉토리로 가는 명령어

패키지

패키지 선언이 필요한 경우

똑같은 파일 이름은 같은 패키지안에 들어갈수없다.

 

다른 패키지에 같은 클래스 이름 넣기 - 가능.

다른패키지는 각각 다른 폴더를 만듦으로서 같은 이름.java여도 다른 폴더로 들어가기 때문에 가능

 

show in - system explore클릭하면 폴더나옴

출력할때 오류 해결!↓

 

 

 

 

Scanner

import 꼭 해주기

package java_hello;

import java.util.Scanner;
//이 Scanner가 java.util.패키지 안에 있는 Scanner이다.

public class CCC {
		
	public static void main(String[] args) {
		Scanner
	}
}

 

import com.wxfx.smart.*

*의 의미 = com.wxfx.smart 패키지 전체를 끌고 오겠다.

 

 

 

정보은닉&캡슐화

 

절차지향(ex. c언어)에서 나왔던 단점을 보완한게 OOP(객체지향)

 OOP는 무엇인가?

 ①정보은닉 (hidden information) -private

 ②상속(inheritance)

 ③다형성(Polymorphism) ---OOP의 70%차지...

 ④캡슐화(encapsulation)

 

 

 

public class Circle {
	double rad = 0;
	final double PI = 3.14;

	public Circle(double r) {
		setRad(r);
	}

	public void setRad(double r) {
		if (r < 0) {
			rad = 0;
            return;
		}
		rad = r;
	}

	public double getArea() {
		return (rad * rad) * PI;
	}

	public static void main(String args[]) {
		Circle c = new Circle(1.5);
		System.out.println(c.getArea());

		c.setRad(2.5);
		System.out.println(c.getArea());
		c.setRad(-3.3);
		System.out.println(c.getArea());
		c.rad = -4.5; // 컴파일 오류 안생김
		System.out.println(c.getArea());
	}
}

 

컴파일 오류 = 프로그램화 하지 못하게 막는다 (=굉장히 좋은것!)

인스턴스 변수 앞에는 private를 반드시 붙여준다!!! - (다이렉트로 값 넣지말라고)

함수에다가 붙여줌

 

정보은닉- 

★접근 수준 지시자 4가지★ 반드시 외울것

public(공공의) > protected > default > private(사적인)

클래스 정의 대상 : public , default(아무것도 안붙인것)

ㄴ 클래스앞에는 저 두개만 붙일 수 있다. (ex. public class Person{  } , class Person{  }

 

public 언제어디서나

default 같은 패키지내에서

private 같은 클래스내에서

 

public - 클래스,변수,메소드 다 붙일 수 있음

인스턴스 - 4가지 다 가능

- 클래스       : public, default
- 생성자       : public, protected, default, private
- 멤버변수    : public, protected, default, private  ex. public void md1(...){...}
- 멤버메소드 : public, protected, default, private

**지역변수는 쓸수없다.

 

 

public class VS (default) class 차이

미리 상식 - package 이름 지정안해줬을땐 (default) package라고 지정해준다.

class앞에 public 을 붙였을 때는 다른 패키지내에 있는 클래스에서 객체 생성을 가능하게 해준다. - 아무데나 다 사용가능

(default) class는 같은 패키지내에서 객체 생성이 가능하다.

 

 

public static - 의 뜻!

 

www.notion.so/201203_-_009_-275231d94d994e6a8e63a2f8f3d463f5

오늘의 문제

1.set classpath 에 대하여 설명하시오.

자바 가상머신이 클래스 파일을 찾는 경로


2.절대경로와 상대경로에 대하여 설명하시오.

절대경로 :  자기 고유의 경로

상대경로 : 자기 기준(현재 디렉토리 기준)으로 지정해준 경로

-결국 두개 다 같은 곳으로 경로를 나타냄


3. . 과 .. 의 차이는?

cd . : 현재 디렉터리

cd .. : 이전 디렉터리

 

4.package의 용도는?

다른 패키지에 같은 클래스 이름 넣기 - 가능.

다른패키지는 각각 다른 폴더를 만듦으로서 같은 이름.java여도 다른 폴더로 들어가기 때문에 가능


5.package 의 기본적인 명명법(이름짓는법)은?

소문자를 사용한다.


6.정보은닉에 대하여 설명하시오.

인스턴스 변수 앞에 private를 붙여주면 다이렉트로 값을 넣어줄때 컴파일 오류가 나게 한다.


7.접근제한자 4가지 종류에 대하여 설명하시오.

public > protected > default > private

클래스       : public, default

생성자       : public, protected, default, private

멤버변수    : public, protected, default, private

멤버메소드 : public, protected, default, private

 

9.class 에서 붙일수 있는 접근 제한자 2개를 설명하고, 해당 접근제한자의 사용 목적은?

- public, default

class앞에 public 을 붙였을 때는 다른 패키지내에 있는 클래스에서 객체 생성을 가능하게 해준다. - 아무데나 다 사용가능

(default) class는 같은 패키지내에서 객체 생성이 가능하다.


10.가위, 바위, 보 게임 작성하시오.

package game;

//가위 바위 보 게임
import java.util.Scanner;

public class Game {

	private static int rock = 2;
	private static int scissors = 1;
	private static int paper = 3;

	public static void main(String[] args) {
		System.out.println("가위 바위 보 게임");
		System.out.println("1.가위 2.바위 3.보");

		// 내가 낼 가위바위보
		Scanner sc = new Scanner(System.in);
		int me = sc.nextInt();

		// 컴퓨터는 랜덤
		int com = (int) (Math.random() * 3) + 1;
		if (com == scissors) {
			System.out.println("컴퓨터 : 1.가위");
		}
		if (com == rock) {
			System.out.println("컴퓨터 : 2.바위");
		}
		if (com == paper) {
			System.out.println("컴퓨터 : 3.보");
		}
		System.out.print("나 : " + me);

		// 컴퓨터 : 2.바위
		if (com == rock && me == rock) {
			System.out.print(".바위\n비겼습니다.");
		} else if (com == rock && me == paper) {
			System.out.println(".보\n이겼습니다.");
		} else if (com == rock && me == scissors) {
			System.out.println(".가위\n졌습니다.");

		}

		// 컴퓨터 : 가위
		if (com == scissors && me == scissors) {
			System.out.println(".가위\n비겼습니다.");
		} else if (com == scissors && me == paper) {
			System.out.println(".보\n졌습니다.");
		} else if (com == scissors && me == rock) {
			System.out.println(".바위\n이겼습니다.");

		}

		// 컴퓨터 : 보
		if (com == paper && me == paper) {
			System.out.println(".보\n비겼습니다.");
		} else if (com == paper && me == rock) {
			System.out.println(".바위\n졌습니다.");
		} else if (com == paper && me == scissors) {
			System.out.println(".가위\n이겼습니다.");
		} else {
			System.out.println(".오류");
		}
	}
}

 


11.아래와 같이 계산기 프로그램을 작성하시오.
==================================
10 + 9   // 입력을 한칸씩 띄우도록 할것
10 + 9 = 19
계속하시겠습니까?
10 - 7
10 - 7 = 3
계속하시겠습니까?

 

package java_hello;

import java.util.*;

public class Calculator {
	private int i;
	private String oper;
	private int j;

	public Calculator(int i, String oper, int j) {
		this.i = i;
		this.oper = oper;
		this.j = j;
	}

	static int add(int i, int j) {
		return i + j;
	}

	static int sub(int i, int j) {
		return i - j;
	}

	static int mul(int i, int j) {
		return i * j;
	}

	static int div(int i, int j) {
		return i / j;
	}

	public static void main(String[] args) {

		while (true) {
			Scanner sc = new Scanner(System.in);

			int i = sc.nextInt();
			String oper = sc.next();
			int j = sc.nextInt();

			if (oper.equals("+"))
				System.out.println(i + " + " + j + " = " + Calculator.add(i, j));

			if (oper.equals("-"))
				System.out.println(i + " - " + j + " = " + Calculator.sub(i, j));

			if (oper.equals("*"))
				System.out.println(i + " * " + j + " = " + Calculator.mul(i, j));

			if (oper.equals("/"))
				System.out.println(i + " / " + j + " = " + Calculator.div(i, j));
			System.out.println("계속 하시겠습니까?");
		}
	}
}

 

728x90

'코딩 > 수업 정리' 카테고리의 다른 글

20.12.07 Mon [011]  (0) 2020.12.07
20.12.04 Fri [010]  (0) 2020.12.04
20.12.02 Wed [008]  (0) 2020.12.02
참고하기 좋은 사이트  (0) 2020.12.01
20.12.01 Tue [007]  (0) 2020.12.01

댓글