0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【19章】Javaを学ぼう

Last updated at Posted at 2021-09-07

前章(【18章】Javaを学ぼう)では自己紹介プログラムを完成させました!
今回は「オブジェクト指向」についてさらに基礎を定着させるため、もう一つプログラムを実装していきたいと思います!
自身のアウトプットの場となりますので、よろしく願いいたします!

まず、「自転車」と「車」という2種類のオブジェクトを用いてプログラムを組み立てます。

##Bicycleクラスの作成
・Bicycleクラスの定義
・Bicycleクラスにインスタンスフィールドnameを定義(private)
・インスタンスを生成し、コンソールにnameの値を出力

Bicycle.java
class Bicycle {
 private String name; 

 Bicycle(String name) {
  this.name = name;
 }

 public String getName() {
  return this.name;
 }
}
Main.java
class Main {
 public static void main(String[] args) {
  Bicycle bicycle = new Bicycle("ジオス");
  System.out.print("【自転車の情報】");
  System.out.println("名前:" + bicycle.getName());                     
 }
}

##Bicycleクラスに色を追加
・Bicycleクラスにインスタンスフィールドcolorを追加(private)
・printDataメソッドを定義して、コンソールにnameとcolorの値を出力

Bicycle.java
class Bicycle {
 private String name; 
 private String color;

 Bicycle(String name, String color) {
  this.name = name;
  this.color = color;
 }

 public String getName() {
  return this.name;
 }

 public String getColor() {
  return this.color;
 }

 public void printData() {
  System.out.println("名前:" + this.name);
  System.out.println("色:" + this.color);
 }
}
Main.java
class Main {
 public static void main(String[] args) {
  Bicycle bicycle = new Bicycle("ジオス", "青");
  System.out.print("【自転車の情報】");
  bicycle.printData();                     
 }
}

##Bicycleクラスに走行距離を追加
・インスタンスフィールドdistanceを追加(private)
・distanceフィールドの初期値は0
・コンソールに、name, color, distanceの値を出力

Bicycle.java
class Bicycle {
 private String name; 
 private String color;
 private int distance = 0;

 Bicycle(String name, String color) {
  this.name = name;
  this.color = color;
 }

 public String getName() {
  return this.name;
 }

 public String getColor() {
  return this.color;
 }

 public void printData() {
  System.out.println("名前:" + this.name);
  System.out.println("色:" + this.color);
  System.out.println("走行距離:" + this.distance + "km");
 }
}
Main.java
class Main {
 public static void main(String[] args) {
  Bicycle bicycle = new Bicycle("ジオス", "青");
  System.out.print("【自転車の情報】");
  bicycle.printData();                     
 }
}

##「走る」機能追加
・インスタンスメソッドrunを定義
・runメソッドは、引数にint型の値(走る距離)を受け取る
・引数で受け取った値を用いて、コンソールに「◯◯km走ります」と出力
・引数で受け取った値を、distanceフィールドに加算する

Bicycle.java
class Bicycle {
 private String name; 
 private String color;
 private int distance = 0;

 Bicycle(String name, String color) {
  this.name = name;
  this.color = color;
 }

 public String getName() {
  return this.name;
 }

 public String getColor() {
  return this.color;
 }

 public void printData() {
  System.out.println("名前:" + this.name);
  System.out.println("色:" + this.color);
  System.out.println("走行距離:" + this.distance + "km");
 }
 public void run(int distance) {
  System.out.println(distance + "km走ります");
  this.distance += distance;
  System.out.println("走行距離:" + this.distance + "km");
 }
}

さらにScannerを使って、走る距離を受け取れるようにします。

Main.java
import java.util.Scanner;
class Main {
 public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  Bicycle bicycle = new Bicycle("ジオス", "青");
  System.out.print("【自転車の情報】");
  bicycle.printData(); 
  System.out.println("-----------------");
  System.out.print("走る距離を入力してください:");
  int bicycleDistance = scanner.nextInt();
  bicycle.run(bicycleDistance);                    
 }
}

##Carクラスの作成
ここまではBicycleクラスの作成をしてきました。同じようにCarクラスを作成します。
Bicycleクラスと同じフィールド、同じメソッドを持つようにします。

Car.java
import java.util.Scanner;
class Car {
 private String name;
 private String color;
 private int distance = 0;
 
 Car(String name, String color) {
  this.name = name;
  this.color = color;
 }

 public String getName() {
  return this.name;
 }

 public String getColor() {
  return this.color;
 }
  
 public void printData() {
  System.out.println("名前:" + this.name);
  System.out.println("色:" + this.color);
  System.out.println("走行距離:" + this.distance + "km");
 }
 public void run(int distance) {
  System.out.println(distance + "km走ります");
  this.distance += distance;
  System.out.println("走行距離:" + this.distance + "km");
 }
}
Main.java
import java.util.Scanner;
class Main {
 public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  Bicycle bicycle = new Bicycle("ジオス", "青");
  System.out.print("【自転車の情報】");
  bicycle.printData(); 
  System.out.println("-----------------");
  System.out.print("走る距離を入力してください:");
  int bicycleDistance = scanner.nextInt();
  bicycle.run(bicycleDistance);   
  System.out.println("=================");
  Car car = new Car("フェラーリ", "赤");
  System.out.println("【車の情報】");
  car.printData();
  System.out.println("-----------------");
  System.out.print("走る距離を入力してください:");
  int carDistance = scanner.nextInt();
  car.run(carDistance);                 
 }
}

##Carクラスにガソリン機能追加
車にはガソリンが必要なので、「ガソリン量」という情報を持たせましょう。
・インスタンスフィールドfuelを追加(private)
・fuelフィールドの初期値は100(100Lが満タンだとします)
・コンソールに、fuelの値を出力

Car.java
import java.util.Scanner;
class Car {
 private String name;
 private String color;
 private int distance = 0;
 private int fuel = 100;
 
 Car(String name, String color) {
  this.name = name;
  this.color = color;
 }

 public String getName() {
  return this.name;
 }

 public String getColor() {
  return this.color;
 }
  
 public void printData() {
  System.out.println("名前:" + this.name);
  System.out.println("色:" + this.color);
  System.out.println("走行距離:" + this.distance + "km");
  System.out.println("ガソリン量:" + this.fuel + "L");
 }
 public void run(int distance) {
  System.out.println(distance + "km走ります");
  this.distance += distance;
  System.out.println("走行距離:" + this.distance + "km");
 }
}

##Carクラスのrunメソッドの改良
Carクラスのインスタンスが走れば、fuelフィールドの値が減るようにしましょう。今回は1km走れば、ガソリンを1L消費するという条件にします。条件分岐を行い、走る距離がガソリンの残量を超えていた場合、走行できないようにします。

Car.java
import java.util.Scanner;
class Car {
 private String name;
 private String color;
 private int distance = 0;
 private int fuel = 100;
 
 Car(String name, String color) {
  this.name = name;
  this.color = color;
 }

 public String getName() {
  return this.name;
 }

 public String getColor() {
  return this.color;
 }
  
 public void printData() {
  System.out.println("名前:" + this.name);
  System.out.println("色:" + this.color);
  System.out.println("走行距離:" + this.distance + "km");
  System.out.println("ガソリン量:" + this.fuel + "L");
 }
 public void run(int distance) {
  System.out.println(distance + "km走ります");
  if (distance <= this.fuel) {
    this.distance += distance;
    this.fuel -= distance;
  } else {
    System.out.println("ガソリンが足りません");
  }
  System.out.println("走行距離:" + this.distance + "km");
  System.out.println("ガソリン量:" + this.fuel + "L");
 }
}

##Carクラスに車に「給油」機能追加
・Carクラスにchargeメソッドを定義
・chargeメソッドは、引数にint型の値(給油する量)を受け取る
・引数の値を用いて、「◯◯L給油します」と出力
・chargeメソッドの中で、条件分岐を行う

Car.java
import java.util.Scanner;
class Car {
 private String name;
 private String color;
 private int distance = 0;
 private int fuel = 100;
 
 Car(String name, String color) {
  this.name = name;
  this.color = color;
 }

 public String getName() {
  return this.name;
 }

 public String getColor() {
  return this.color;
 }
  
 public void printData() {
  System.out.println("名前:" + this.name);
  System.out.println("色:" + this.color);
  System.out.println("走行距離:" + this.distance + "km");
  System.out.println("ガソリン量:" + this.fuel + "L");
 }
 public void run(int distance) {
  System.out.println(distance + "km走ります");
  if (distance <= this.fuel) {
    this.distance += distance;
    this.fuel -= distance;
  } else {
    System.out.println("ガソリンが足りません");
  }
  System.out.println("走行距離:" + this.distance + "km");
  System.out.println("ガソリン量:" + this.fuel + "L");
 }

 public void charge(int litre) {
  System.out.println(litre + "L給油します");
  if (litre <= 0) {
    System.out.println("給油できません");
  } else if (litre + this.fuel >= 100) {
    System.out.println("満タンまで給油します");
    this.fuel = 100;
  } else {
    this.fuel += litre;
  }
  System.out.println("ガソリン量:" + this.fuel + "L");
 }
}
Main.java
import java.util.Scanner;
class Main {
 public static void main(String[] args) {
  Scanner scanner = new Scanner(System.in);
  Bicycle bicycle = new Bicycle("ジオス", "青");
  System.out.print("【自転車の情報】");
  bicycle.printData(); 
  System.out.println("-----------------");
  System.out.print("走る距離を入力してください:");
  int bicycleDistance = scanner.nextInt();
  bicycle.run(bicycleDistance);   
  System.out.println("=================");
  Car car = new Car("フェラーリ", "赤");
  System.out.println("【車の情報】");
  car.printData();
  System.out.println("-----------------");
  System.out.print("走る距離を入力してください:");
  int carDistance = scanner.nextInt();
  car.run(carDistance);    
  System.out.println("-----------------");
  System.out.print("給油する量を入力してください:");
  int litre = scanner.nextInt();
  car.charge(litre);             
 }
}

これでひとまずプログラムが完成になります。次章では重要な「オブジェクト指向」である継承について学び、さらに今回作成したプログラムを改良していきたいと思います!
最後までご覧いただきまして、ありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?