corsoJava
  • Corso JAVA
  • Introduzione linguaggio
  • Verifica tipi primitivi vs reference
  • Esercizi su equals
  • Introduzione su oggetti
  • Packages e import
  • Polimorfismo
    • Pit stop
  • Enum
  • String è speciale
  • Eccezioni
  • Nested Classes
  • Array, ArrayList e Hash Table
    • Esempio gioco carte
  • Linked data structures
  • Tipi generici
  • Comparing Java and C# Generics - Jonathan Pryor's web log
  • Contenitori
    • Esempi con classi container
  • Input/Output streams, Files
  • Basic I/O
  • Java IO Tutorial
  • Networking
  • I Thread e concorrenza
    • Esercizi multithreading
    • Thread interference
    • Esercizi thread interference
    • wait(), notify() e notifyAll() per la sincronizzazione tra i thread
    • Verifiche produttore/consumatore
    • Lock esplicito - java.util.concurrent.Locks
    • Semafori
    • Programmare con i thread
    • I Virtual Thread
    • Materiale
  • I Thread e networking
  • Esempi Java Socket Programming
  • Esempi Javascript Socket Programming
  • Messaggi datagram e invio multicast
  • Lambda Expression
  • Java Stream
  • Data Oriented Programming in Java
  • Java improved its 'Hello World' experience
  • Appendice A: utilizzo classe Scanner
  • Java For The Experienced Beginner
  • Modern Java
  • CodeJava - Java Core
  • Is OOP Relevant Today?
  • Book
Powered by GitBook
On this page
  • ESERCIZI:
  • ESEMPI SOLUZIONI

Esercizi su equals

Overridding di equals nelle sottoclassi di Object per implementare l'ugualianza per valore

PreviousVerifica tipi primitivi vs referenceNextIntroduzione su oggetti

Last updated 6 years ago

Esercizi per mostrare l'utilità di eseguire l'override del metodo equals nelle sottoclassi per avere l'ugualianza per valore del metodo equals.

ESERCIZI:

  • Riprendendo il punto della verifica, imprlmentate una versiona di equals che restituisca il valore true quando due oggetti di tipo Persona hanno gli attributi nome ed eta uguali come valore. Nell'implementazione della classe fate anche si che gli attributi nome ed eta siano privati e quindi accessibili solo tramite metodi. Verificate che l'equals si comporta correttamente (caso in cui ritorna true e false):

laboratorio1/test/TestPersona.java
package laboratorio1.test;

import laboratorio1.Persona;

public class TestPersona {

	public static void main(String[] args) {
		
		Persona persA = new Persona("Marco", 6);
		
		Persona persB = new Persona("Marco", 6);
		
		Persona persC = new Persona("Luca", 6);
		
		
		// verificate
		if(persA.equals(persB)) {
			System.out.println("IMPLEMENTAZIONE CORRETTA");
		} else {
			System.out.println("IMPLEMENTAZIONE ERRATA");
		}
		
		if(persA.equals(persC)) {
			System.out.println("IMPLEMENTAZIONE ERRATA");
		} else {
			System.out.println("IMPLEMENTAZIONE CORRETTA");
		}
	}

}
  • Implementate una classe CassaVino con due attributi private: nomeVino di tipo String e annata di tipo int . Implemenentate la equals nella classe CassaVino che esegua il controllo solo sul nomeVino cioè due casse di vino di Lambrusco una del 1996 e una del 2000 sono uguali. Implementate la equals e una classe di test che verifichi il comportamento della classe CassaVino.

  • Ora scrivete un programma che simula un negozio che vende vino all'ingrosso: il cliente entra nel negozio e chiede al gestore se ci sono 3 casse di Lambrusco ad esempio. Il gestore verifica dal magazzino se c'è la disponibilità. Le casse di Lambrusco possono essere di annate differenti e andare bene oppure il cliente può chiedere un tipo di vino e chiedendo anche che sia di una certa annata, tipo Amarone del 2001. Poi il cliente deve poter ordinare le casse del vino che desidera, con o senza annata, e in magazzino devono essere tolte le casse. Utilizzare una classe java.util.Vector per contenere le casse di vino e i metodi della classe.

ESEMPI SOLUZIONI

Nel package laboratorio.negoziovini c'è l'esempio del negozio vini. La classe per testare le funzionalità è laboratorio.negoziovini.TestNegozio.

, con esempi di override del metodo equals di Object nella classe laboratorio.persona.Persona (la classe che esegue il test è laboratorio.persona.TestPersona).

https://github.com/checksound/TestBase#3-domanda-verifica-ugualianza-per-riferimento-vs-ugualianza-per-valore
https://github.com/checksound/ObjectEqualsOverride