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();
}
}
메서드는 기본적으로 public이지만, private을 사용하는 경우도 있다.
private 메서드의 목적은 정보 은닉이다.
- 사용자가 제어할 수 있는 부분 ↓ 사용자 편의성 ↑
- 보이지 않는 부분을 기능별로 나누어 → 수정 편리 ↑ 개발자 편의성 ↑
ex) -엔진체크 -오일체크 -시동 -조향 +출발 { 엔진체크 오일체크 시동 조향 }
↓ 정보은닉 하지않은 메서드
↓ 정보은닉한 메서드
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();
}
}
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();
}
}
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);
}
}
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();
}
}