ATPS - Programação Orientada a Objetos
Por: Juliana2017 • 14/2/2018 • 3.274 Palavras (14 Páginas) • 450 Visualizações
...
1.3.3 ECLIPSE
Ambiente de desenvolvimento gratuito para a linguagem Java. Apesar de ser mais avançado que seu concorrente NetBeans, hoje em dia tem perdido popularidade para o concorrente mais novo IntelliJ.
2 RELATÓRIO 1
2.1 Descrição
De acordo com o enunciado:
“Fazer uma classe para representar o aluguel de um quarto (dica: armazene as informações de data e horário de entrada e saída separadas, ou seja, um campo inteiro para o dia de entrada, um campo inteiro para o mês de entrada, um campo inteiro para o ano de entrada, um campo inteiro para o horário de entrada etc.). Esta classe deve conter métodos para calcular o número de diárias e o valor a ser pago pelo locatário.”
De acordo com o “Princípio da Responsabilidade Única”, tomamos a liberdade de não deixar as informações de hospedagem, cálculos de diárias e impressão de recibo na mesma classe.
Foi decidido de comum acordo que é uma boa prática observar que cada objeto deve ter apenas uma motivação e ser alterado em apenas um ponto.
Não concordamos também com a quebra das datas de entrada e saída em campos separados, uma vez que o Java provê tipos específicos para armazenamento de data (Date e Calendar), além de toda uma API para cálculos de datas, adicionada na versão 8 do Java.
O pacote principal da aplicação é ead2.poo.atps.marau, existindo pacotes internos de acordo com a necessidade de organização do código.
2.2 Código fonte
2.2.1 APP.JAVA
/**
* Classe que inicia a aplicação.
*
*/
package ead2.poo.atps.marau;
import java.io.IOException;
import java.text.ParseException;
import ead2.poo.atps.marau.util.KeyboardReader;
public class App {
public static void main(String[] args) throws Exception {
App app = new App();
app.addBooking();
}
/**
* Método que abre uma nova hospedagem e imprime o respectivo recibo
*/
private void addBooking() throws IOException, ParseException {
Booking booking = getBoookingData();
ReceiptPrinter.print(booking);
}
private Booking getBoookingData() throws IOException, ParseException {
System.out.println("= Reserva de quarto =");
System.out.println();
String renterName = KeyboardReader.readLineAsString("Nome do locatario: ");
String checkin = KeyboardReader.readLineAsString("Data de entrada : ", "dd/MM/yyyy hh:mm");
String checkout = KeyboardReader.readLineAsString("Data de saída : ", "dd/MM/yyyy hh:mm");
int guests = KeyboardReader.readLineAsInteger("Acompanhantes : ");
double dailyRate = KeyboardReader.readLineAsDouble("Valor da diária : ");
return new Booking(renterName, checkin, checkout, guests, dailyRate);
}
}
2.2.2 BOOKING.JAVA
/**
*
* Classe responsável por armazenar as informações de hospedagem
*
*/
package ead2.poo.atps.marau;
import java.text.ParseException;
public class Booking {
private String renterName;
private String checkin;
private String checkout;
private int guests;
private double dailyRate;
private int dailyCount;
public Booking(final String renterName, final String checkin, final String checkout, final int guests, final double dailyRate) throws ParseException {
this.renterName = renterName;
this.checkin = checkin;
this.checkout = checkout;
this.guests = guests;
this.dailyRate = dailyRate;
this.dailyCount = DefaultPeriodCalculator.countDays(this.checkin, this.checkout);
}
public String getRenterName() {
return renterName;
}
public String getCheckin() {
return checkin;
}
public String getCheckout() {
return checkout;
}
public int getDailyCount() {
return dailyCount;
}
public double getTotalRate() {
return
...