- 현재 디렉토리
- 절대경로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("계속 하시겠습니까?"); } } }
'코딩 > 수업 정리' 카테고리의 다른 글
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 |
댓글