Задатак — Навигација и избор руте
Потребно је направити једноставан модел навигације.
Навигација треба да подржи различите начине рачунања руте:
- аутомобилом;
- пешке;
- бициклом.
Дефинисати интерфејс:
public interface NacinRutiranja {
void izracunajRutu(String polaziste, String odrediste);
}
Направити имплементације:
AutomobilskaRuta
PesackaRuta
BiciklistickaRuta
За потребе задатка није потребно рачунати праву руту.
Довољно је да свака имплементација испише другачију поруку.
На пример:
Računam najbržu automobilsku rutu od Beograda do Novog Sada.
Класа Navigacija
Треба да има:
private NacinRutiranja nacinRutiranja;
и да рачунање руте делегира том објекту.
Омогућити:
postaviNacinRutiranja(...)
како би корисник могао да промени начин рутирања током рада.
Демонстрација
У Main:
- направити навигацију која рачуна аутомобилску руту;
- израчунати руту;
- променити стратегију на пешачку;
- поново израчунати руту;
- променити стратегију на бициклистичку.
Додатак
Додати нову стратегију:
RutaJavnimPrevozom
без измене класе Navigacija.
Размислити:
- зашто
Navigacijaне треба да има великиifилиswitch; - шта је овде стратегија;
- шта је конкретна стратегија;
- где је композиција;
- где је делегирање;
- зашто промена стратегије не мења идентитет објекта
Navigacija.
Самостални део — Процена трајања пута
Навигација бира процену трајања за пешачење, бицикл и аутомобил. За позитиван број километара користити брзине 5, 15 и 60 км/ч, а резултат заокружити навише на целе минуте. Није потребно рачунати пут кроз граф.
Критеријум провере: За 10 км очекивати 120, 40 и 10 минута. Исти објекат навигације мења начин процене. Образложити зашто стратегија враћа резултат уместо да га само исписује.
Предати мали Main са демонстрацијом и кратко образложење одлука. У овом делу
нису задати називи класа или обавезни обрасци; образложено једноставније решење
је прихватљиво. Најпре дефинисати уговор и очекивани резултат, па имплементирати.