Soma e Subtração entre Objetos em Java

7 respostas Resolvido
java
L

Pessoal, sou iniciante em programação Java… e não to conseguindo fazer este exercício:

  1. Crie uma classe Tempo com três atributos: horas, minutos e segundos. Crie dois construtores: um para
    inicializar os atributos com valor 0 e outro para inicializar os atributos com valores passados como
    argumentos. Crie métodos para:
    a. Funcionar como getter e setter;
    b. Imprimir os atributos no formato hh:mm:ss;
    c. Subtrair dois objetos e coloca o resultado no objeto que o chamou;
    d. Somar que soma dois objetos e coloca o resultado no objeto que o chamou;
    e. Sobrecarregue este último método para que retorne um objeto com o resultado da operação

na verdade não consigo fazer a partir da letra C, o resto já fiz

7 Respostas

S

Posta o que já fez, não temos como adivinhar a forma que você implementou. :wink:

L

Postarei aqui assim que tiver com ele novamente…
Mas seja educado meu chegado… o fórum é para ajuda e leia novamente a parte que sou iniciante :wink:

D

Quem está sendo mal educado é você, cara.
O @staroski é das pessoas que mais ajudam, tem um conhecimento incomparável e é extremamente humilde.
Ele não foi desrespeitoso e não fez nenhuma gracinha, exceto pelo emoji ao fim do que ele escreveu.

S

Eu tento ser, se pareci mal educado, não foi minha intenção.
Mas de fato, não temos como adivinhar como ficou a estrutura que você implementou.
Sem conhecer sua estrutura, não dá pra orientar a implementar a soma e subtração desses objetos.

L
public class Tempo {

int h;

int m;

int s;
public Tempo() {
	h=m=s=0;
}

public Tempo(int h, int m, int s) {
	sethora(h);
	setminuto(m);
	setsegundo(s);
}

public void sethora(int h) {
	this.h = h;
}

public void setminuto(int m) {
	this.m =m;
}

public void setsegundo(int s) {
	this.s = s;
}

public int gethora() {
	return h;
}

public int getminuto() {
	return m;
}

public int getsegundo() {
	return s;
}

public void imprimetempo() {
	System.out.println(gethora()+":"+getminuto()+":"+getsegundo());
}

}

S
Solucao aceita

A classe Tempo:

public class Tempo {

    private int horas;
    private int minutos;
    private int segundos;

    public Tempo() {
        this(0, 0, 0);
    }

    public Tempo(int horas, int minutos, int segundos) {
        setHoras(horas);
        setMinutos(minutos);
        setSegundos(segundos);
    }

    public int getHoras() {
        return horas;
    }

    public int getMinutos() {
        return minutos;
    }

    public int getSegundos() {
        return segundos;
    }

    public void setHoras(int horas) {
        this.horas = horas;
    }

    public void setMinutos(int minutos) {
        this.minutos = minutos;
    }

    public void setSegundos(int segundos) {
        this.segundos = segundos;
    }

    public void imprimir() {
        System.out.println(this);
    }

    public Tempo subtrair(Tempo tempo) {
        return segundosParaTempo(this.emSegundos() - tempo.emSegundos());
    }

    public Tempo somar(Tempo tempo) {
        return segundosParaTempo(this.emSegundos() + tempo.emSegundos());
    }

    // representação textual deste objeto
    @Override
    public String toString() {
        return String.format("%02d:%02d:%02d", getHoras(), getMinutos(), getSegundos());
    }

    // converte este objeto Tempo em um total de segundos
    private int emSegundos() {
        return (getHoras() * 3600) + (getMinutos() * 60) + getSegundos();
    }

    // converte um total de segundos em um objeto Tempo
    private static Tempo segundosParaTempo(int totalSegundos) {
        int segundos = totalSegundos;
        int horas = segundos / 3600;
        segundos -= (horas * 3600);
        int minutos = segundos / 60;
        segundos -= (minutos * 60);
        return new Tempo(horas, minutos, segundos);
    }
}

Exemplo de uso:

Tempo a = new Tempo(13, 15, 25);
Tempo b = new Tempo(5, 0, 35);
Tempo c = a.subtrair(b);
Tempo d = a.somar(b);

a.imprimir();
b.imprimir();
c.imprimir();
d.imprimir();

Saída após execução:

13:15:25
05:00:35
08:14:50
18:16:00
L

Entendi como funciona… agora é treinar pra aperfeiçoar. Muito obrigado! Desculpe o mal entendido de mais cedo!

Criado 4 de junho de 2019
Ultima resposta 4 de jun. de 2019
Respostas 7
Participantes 3