Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Finta ereditarietà

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da gennysennin Visualizza il messaggio
    mi sto complicando la vita perchè ancora non ho ben chiaro come usare le classi, ho capito come funzionano nella teoria [...] sono ancora nella fase "che ci faccio con queste classi"?
    Se i dubbi sono ancora a questo livello, personalmente ti suggerisco di accantonare per un pochino i giochi (che siano carte o altro) e di fare qualche "esercizio" in più che metta bene in evidenza i concetti di ereditarietà/polimorfismo, override e quant'altro.

    Ce ne sono tanti che puoi fare, uno utile e abbastanza "classico": gerarchia di classi per rappresentare oggetti solidi, quindi classe base Solido e sottoclassi es. Sfera, Cubo, ecc.. con la possibilità di determinare in modo "polimorfico" superficie e volume. Magari gli oggetti possono essere "tirati su" da un file anche testuale.
    Ma ce ne sono decine di altri fattibili.
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  2. #2
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Se i dubbi sono ancora a questo livello, personalmente ti suggerisco di accantonare per un pochino i giochi (che siano carte o altro) e di fare qualche "esercizio" in più che metta bene in evidenza i concetti di ereditarietà/polimorfismo, override e quant'altro.

    Ce ne sono tanti che puoi fare, uno utile e abbastanza "classico": gerarchia di classi per rappresentare oggetti solidi, quindi classe base Solido e sottoclassi es. Sfera, Cubo, ecc.. con la possibilità di determinare in modo "polimorfico" superficie e volume. Magari gli oggetti possono essere "tirati su" da un file anche testuale.
    Ma ce ne sono decine di altri fattibili.
    In realtà questi esercizi li sto facendo, tipo quello delle figure, oppure Persona -> Dipendente e così via, se li trovo so risolverli, il problema è quando devo essere io a decidere come iniziare a usare le classi per un qualcosa che voglio fare, tipo questo gioco, con c# (senza però usare le classi, feci tutto nel main) l'ho fatto, è l'utilizzo delle classi che mi dà problemi. Tpo ora, so benissimo che la classe MazzoCarte non è in realtà giusta come sottoclasse in quanto un MazzoDiCarte NON è una Carta, però mi ritroverei a fare tutto in una sola classe poi.
    Ultima modifica di gennysennin; 19-03-2016 a 16:27

  3. #3
    Per la lettura da file ancora non ci sono arrivato.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da gennysennin Visualizza il messaggio
    Tpo ora, so benissimo che la classe MazzoCarte non è in realtà giusta come sottoclasse in quanto un MazzoDiCarte NON è una Carta
    Appunto, la ereditarietà serve per definire una relazione di generalizzazione-specializzazione tra due classi. Cioè la sottoclasse deve rappresentare una entità che è un "caso particolare" rispetto alla entità rappresentata dalla superclasse ma può comunque sempre essere vista anche come la entità superiore (un String è anche un Object). Devi quindi sempre valutare e verificare che a livello concettuale rispetti il principio "è-un" (IS-A).

    Casi che sono sensati ed appropriati e vanno bene:
    - un Gatto è-un Animale (ed es. GattoPersiano è-un Gatto)
    - una Sfera è-un Solido
    - una Auto è-un Veicolo (ed es. una Ferrari è-una Auto)

    Mentre invece:
    - un MazzoDiCarte NON è una Carta
    - un Punto3D NON è un Punto2D
    - un ContoCorrente NON è una Banca e nemmeno il contrario (ti sembrerà strano ma c'è stata gente che ha tentato questo!)
    Andrea, Senior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.