[JAVA기초] 정보은닉, Random

포키·2022년 10월 18일
0

국비과정

목록 보기
18/73

tesla 이야기 - 'OTA(Over-the-air programming'


  • Math.random()
    : 난수 생성 (프로그램이 실행될 때마다 0 이상 1 미만의 값을 반환함)
  • (int) Math.random() * n + m
    시작하는 수 m, 경우의 수 n
    = 같은 결과
Random r = new Random();
r.nextInt(n) + m;

  • 주어진 코드 개선해보기
    불필요한 코드 제거
    원칙에 어긋난 부분 수정
    표현이 일관적이지 않은 부분 = 직관X -> 수정

import java.util.Scanner;
class DiceGame {
	private int diceFace;
	private int userGuess;

	private void rollDice(){
		diceFace = (int)(Math.random() * + 6) + 1;
	}

	private int getUserInput(String prompt) {
		System.out.println(prompt);
		Scanner s = new Scanner(System.in);
		return s.nextInt();
	}

	private void checkUserGuess(){
		if(diceFace == userGuess){
			System.out.println("맞았습니다");
		} else {
			System.out.println("틀렸습니다");
		}
	}
	public void startPlaying(){
		userGuess = getUserInput("예상값을 입력하시오: ");	
		rollDice();											
		checkUserGuess();
	}
}
public class DiceGameTest {
	public static void main(String[] args) {
		DiceGame game = new DiceGame();
		game.startPlaying();
	}
}

정보은닉 - private 메서드의 목적

메서드는 기본적으로 public이지만, private을 사용하는 경우도 있다.
private 메서드의 목적은 정보 은닉이다.

  • 정보 은닉
    : 편의성 증대 -> 사용자도 쓰기 편하고, 구현자도 수정이 편하다.
  1. 사용자가 제어할 수 있는 부분 ↓ 사용자 편의성 ↑
  2. 보이지 않는 부분을 기능별로 나누어 → 수정 편리 ↑ 개발자 편의성 ↑
ex)
-엔진체크
-오일체크
-시동
-조향
+출발 {
	엔진체크
    오일체크
    시동
    조향
}

↓ 정보은닉 하지않은 메서드

↓ 정보은닉한 메서드

1

class Rocket {
	private int x;
	private int y;

	public Rocket(int x, int y){
		this.x = x;
		this.y = y;
	}

	public String toString(){
		return "(" + x + "," + y + ")";
	}
	public void printInfo(){
		System.out.println(this);
	}

	public void moveUp(){
		y++;
	}
}
class UseRocket {
	public static void main(String[] args) {
		Rocket r = new Rocket(1,2);
		r.printInfo();
		r.moveUp();
		r.printInfo();
	}
}

2

class Person {
	private String name;
	private String mobile;
	private String office;
	private String email;

	public Person(String n, String m, String o, String e){
		name = n;
		mobile = m;
		office = o;
		email = e;
	}

	public String toString() {
		return name + "(" + mobile + ", " + office + ", " + email + ")";
	}
	public void printInfo(){
		System.out.println(this);
	}
	public void setName(String name){
		this.name = name;
	}
	public void setMobile(String mobile){
		this.mobile = mobile;
	}
	public void setOffice(String office){
		this.office = office;
	}
	public void setEmail(String email){
		this.email = email;
	}

	public String getName(){
		return name;
	}
	public String getMobile(){
		return mobile;
	}
	public String getOffice(){
		return office;
	}
	public String getEmail(){
		return email;
	}
}
class UsePerson {
	public static void main(String[] args) {
		Person p = new Person("홍길동","010-0000-0000","070-0000-0000","gildong_h@gmail.com");
		p.printInfo();
		p.setName("아이유");
		System.out.println(p.getName());
		p.setMobile("010-1234-5678");
		System.out.println(p.getMobile());
		p.setOffice("070-9876-5432");
		System.out.println(p.getOffice());
		p.setEmail("iu_1018@gmail.com");
		System.out.println(p.getEmail());
		p.printInfo();

	}
}

3

class Song {
	private String title;
	private String artist;
	private int length;

	public Song(String title, String artist, int length){
		this(title, artist);
		this.length = length;
	}
	public Song(String title, String artist){
		this(title);
		this.artist = artist;
	}
	public Song(String title){
		this();
		this.title = title;
	}
	public Song(){
	}

	public String toString(){
		return title + "\ (" + artist + "), " + length + "초";
	}
}
class SongTest {
	public static void main(String[] args) {
		Song s1 = new Song("Outward Bound","Nana",180);
		Song s2 = new Song("Jambalya","Carpenters");
		Song s3 = new Song("Yesterday");
		Song s4 = new Song();
		System.out.println(s1);
		System.out.println(s2);
		System.out.println(s3);
		System.out.println(s4);
	}
}

4

class Dog{
	private String name;
	public String breed;
	private int age;

	public String toString(){
		return "(" + breed + ", " + age + ", " + name + ")";
	}

	public Dog(String name, String breed, int age){
		this(name, age);
		this.breed = breed;
	}
	public Dog(String name, int age){
		this.name = name;
		this.age = age;
	}

	public void barking(){
		System.out.println("멍멍");
	}
}
class UseDog {
	public static void main(String[] args) {
		Dog d = new Dog("orange","york",1);
		System.out.println(d);
		d.barking();
	}
}
profile
welcome

0개의 댓글