- 현재 디렉토리
- 절대경로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 |
댓글