Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Ride
- public class Ride {
- private final int passengers;
- private final int distance;
- private final int duration;
- private final Tariff tariff;
- public Ride (int passengers,int distance,int duration,Tariff tariff) {
- this.passengers = passengers;
- this.distance = distance;
- this.duration = duration;
- this.tariff = tariff;
- }
- public int getPassengers() {
- return passengers;
- }
- public int getDistance() {
- return distance;
- }
- public int getDuration() {
- return duration;
- }
- public long getPrice() {
- return tariff.calculatePrice(this);
- }
- @Override
- public String toString() {
- return "Ride{"+"passengers=" + passengers+",distance=" + distance +",duration=" + duration+",tariff="+tariff+'}';
- }
- }
- public class FamilyTariff implements Tariff{
- @Override
- public long calculatePrice(Ride ride) {
- return 50+20*ride.getDistance()/ride.getPassengers();
- }
- }
- import java.util.ArrayList;
- import java.util.List;
- public class RidesHistory {
- private final List<Ride>rides = new ArrayList<>();
- public void addRide(Ride ride) {
- rides.add(ride);
- }
- public long getTotalPrice() {
- long total = 0;
- for (Ride ride : rides) {
- total+=ride.getPrice();
- }
- return total;
- }
- @Override
- public String toString() {
- return "RidesHistory{"+"rides="+ rides+'}';
- }
- }
- public class StandartTariff implements Tariff {
- @Override
- public long calculatePrice(Ride ride) {
- return 30+5*ride.getDistance()+2*ride.getDuration();
- }
- }
- public interface Tariff {
- long calculatePrice(Ride ride);
- }
- public class TaxiRunner {
- public static void main(String[] args) {
- Tariff familytariff = new FamilyTariff();
- Tariff standarttariff = new StandartTariff();
- Ride ride1 = new Ride(4, 15, 40, familytariff);//125
- Ride ride2 = new Ride(1,20,55,standarttariff);//240
- RidesHistory ridesHistory = new RidesHistory();
- ridesHistory.addRide(ride1);
- ridesHistory.addRide(ride2);
- System.out.println("One:"+ride1.getPrice());
- System.out.println("Two:"+ride2.getPrice());
- }
- }
Add Comment
Please, Sign In to add comment