Informatică, întrebare adresată de claudianastasiu, 8 ani în urmă

Cerință

În această problemă va trebui să scrii o clasă EvenimentToataZiua subclasă a Eveniment.

Aceasta va păstra funcționalitățile clasei Eveniment, cu o excepție: constructorul va primi următorii parametri:

data - String în formatul yyyy-MM-dd reprezentând data când are loc evenimentul
nume - String reprezentând numele evenimentului
În plus:

în momentul apelului, metoda durataEveniment va returna 24.
în momentul apelului, metoda getDataInceput va returna data de început a evenimentului - ora 00:00:00
Precizare
Pentru rezolvarea acestei probleme poți folosi orice clasă din java.util și java.text
Exemplu
import java.text.*;
import java.util.*;
import java.util.concurrent.TimeUnit;

class Eveniment {
private Date dataInceput, dataSfarsit;
private String nume;

public Eveniment(String dataInceput, String dataSfarsit, String nume) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
this.dataInceput = format.parse(dataInceput);
this.dataSfarsit = format.parse(dataSfarsit);
} catch (Exception e) {
System.out.println("Data in format incorect");
System.out.println(e.getMessage());
}
this.nume = nume;
}

public Date getDataInceput() {
return dataInceput;
}

public Date getDataSfarsit() {
return dataSfarsit;
}

public String getNume() {
return nume;
}

// Returneaza durata in ore a unui eveniment
public final long durataEveniment() {
long diferentaInMs = Math.abs(dataSfarsit.getTime() - dataInceput.getTime());
return TimeUnit.HOURS.convert(diferentaInMs, TimeUnit.MILLISECONDS);
}
}

// clasa ta aici

public class prog {
public static void main(String[] args) throws Exception {
Eveniment e = new EvenimentToataZiua("2019-04-22", "asd");
System.out.println(e.durataEveniment()); // 24
}
}

Răspunsuri la întrebare

Răspuns de andrei750238
3

import java.text.*;

import java.util.*;

import java.util.concurrent.TimeUnit;

class Eveniment {

   private Date dataInceput, dataSfarsit;

   private String nume;

   public Eveniment(String dataInceput, String dataSfarsit, String nume) {

       SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

       try {

           this.dataInceput = format.parse(dataInceput);

           this.dataSfarsit = format.parse(dataSfarsit);

       } catch (Exception e) {

           System.out.println("Data in format incorect");

           System.out.println(e.getMessage());

       }

       this.nume = nume;

   }

   public Date getDataInceput() {

       return dataInceput;

   }

   public Date getDataSfarsit() {

       return dataSfarsit;

   }

   public String getNume() {

       return nume;

   }

   // Returneaza durata in ore a unui eveniment

   public final long durataEveniment() {

       long diferentaInMs = Math.abs(dataSfarsit.getTime() - dataInceput.getTime());

       return TimeUnit.HOURS.convert(diferentaInMs, TimeUnit.MILLISECONDS);

   }

}

class EvenimentToataZiua extends Eveniment{

   EvenimentToataZiua(String data, String nume){

       super(data + " 00:00:00", data + " 24:00:00", nume);

   }

}

public class prog {

   public static void main(String[] args) throws Exception {

       Eveniment e = new EvenimentToataZiua("2019-04-22", "asd");

       System.out.println(e.durataEveniment()); // 24

   }

}

► Explicatie :

Folosim apel catre constructorul din clasa parinte, dar adaugam la string ora (data inceput de la 00:00:00, data finala pana la 24:00:00).

Nu ma asteptam sa functioneze daca adaug ora 24 (care teoretic nu exista) dar spre surprinderea mea a mers.

Anexe:
Alte întrebări interesante