Visualizzazione dei risultati da 1 a 10 su 13

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    D'accordo, ma la geometria è stata inventata e sviluppata dall'uomo. E se all'uomo fa comodo pensare un quadrato come a un caso speciale di rettangolo o rombo non è che la natura pensi allo stesso modo.
    "In natura non esistono linee dritte" disse Gaudì a proposito delle sue costruzioni strane.
    Nella OOP pensare un quadrato come un rettangolo e/o rombo particolare (geometricamente parlando) porta a creare interfacce sconnesse e piene di errori (e non lo dico io, ma l'articolo).
    La soluzione la suggerisci tu quando dici:
    tecnicamente un quadrato è un caso speciale di rettangolo, e rettangolo sarebbe un caso speciale di parallelogramma
    ergo "un quadrato è un caso speciale di parallelogramma".
    Io parlo di figura geometrica più generale, ma il concetto è quello.

    @gaten
    Quindi, in questo caso, conviene creare una interfaccia "Figura" e "Rettangolo" e "Quadrato" che implementano l'interfaccia "Figura", dopodichè implemento distintamente i metodi setWeight e setHeight in Rettangolo e Quadrato.
    Io farei proprio così per semplicità. Se si trattasse di C++ al massimo farei ereditare Quadrato da Rettangolo in modo protected, ma poi come la mettiamo col Rombo?
    Tra l'altro io sarei anche più "talebano": toglierei la possibilità di modificare le dimensioni di una figura i metodi appositi set_qualcosa() e ne permetterei il dimensionamento solo attraverso il costruttore e successivo assegnamento.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Quote Originariamente inviata da shodan Visualizza il messaggio
    D'accordo, ma la geometria è stata inventata e sviluppata dall'uomo. E se all'uomo fa comodo pensare un quadrato come a un caso speciale di rettangolo o rombo non è che la natura pensi allo stesso modo.
    "In natura non esistono linee dritte" disse Gaudì a proposito delle sue costruzioni strane.
    qui cadi in contradizione: dato che la natura non ha forme rigide la natura non può pensare niente del quadrato perché non esiste.
    Nella OOP pensare un quadrato come un rettangolo e/o rombo particolare (geometricamente parlando) porta a creare interfacce sconnesse e piene di errori (e non lo dico io, ma l'articolo).
    questo è un problema dell'OOP e non della geometria.
    La soluzione la suggerisci tu quando dici:

    ergo "un quadrato è un caso speciale di parallelogramma".
    Io parlo di figura geometrica più generale, ma il concetto è quello.
    errato: il parallelogramma è solo un caso speciale di poligono a 4 lati che a sua volta è un caso speciale di poligono che è un caso speciale di poligonale... figura. Inoltre rombo e rettangolo sono un caso speciale di parallelogramma e quadrato un caso speciale di questi ultimi due.
    Edit: ovviamente il quadrato è anche un caso speciale di parallelogramma, ma lo è allo stesso modo in cui è un caso speciale di linea.
    @gaten

    Io farei proprio così per semplicità. Se si trattasse di C++ al massimo farei ereditare Quadrato da Rettangolo in modo protected, ma poi come la mettiamo col Rombo?
    Una soluzione già accennata da MItaly è la ereditarietà multipla.
    Tra l'altro io sarei anche più "talebano": toglierei la possibilità di modificare le dimensioni di una figura i metodi appositi set_qualcosa() e ne permetterei il dimensionamento solo attraverso il costruttore e successivo assegnamento.
    Questa è la soluzione più logica ed è anche il motivo per cui nei linguaggi che adottano principi funzionali non si incorre in questi problemi.
    Ultima modifica di Scara95; 11-12-2013 a 16:36
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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.