Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    Principio di sostituibilità Liskov

    Se S è un sottotipo of T,
    allora oggetti di tipo T in un programma
    possono essere sostitituiti da oggetti di tipo S
    senza alterare alcuna proprietà desiderabile del programma.
    quindi se ho una classe S con il metodo stampa() che stampa a video "ciao!", e implemento una sua sotto classe T, non posso fare l'overriding del metodo stampa?

  2. #2

    Re: Principio di sostituibilità Liskov

    Originariamente inviato da bako
    quindi se ho una classe S con il metodo stampa() che stampa a video "ciao!", e implemento una sua sotto classe T, non posso fare l'overriding del metodo stampa?
    (se ben ricordo)
    Al contrario, il concetto chiave e` che la sottoclasse T implementi il metodo 'stampa' rispettando la stessa interfaccia di 'S'. Cosa poi faccia effettivamente 'stampa', beh, dipende
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Hai un linguaggio di programmazione di riferimento o si tratta di una domanda puramente teorica?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    il metodo stampa non mi sembra l'esempio più appropriato per il principio, in sostanza dice che chi usa gli oggetti della gerarchia non deve accorgersi della differenza,
    ti cito un esempio:

    hai una classe IntSet che è un Set di interi con un metodo elements() che restituisce un iteratore agli elementi.

    Poi definisci una sottoclasse di IntSet, GigiIntSet, fai l'override di elements() e gli fai restituire un itaratore solo ai numeri dispari del set.

    A questo punto NON hai rispettato il principio della liskov, perchè:
    a)gli utilizzatori delle tue classi avranno un comportamento inaspettato utilizzando GigiIntSet, pensa ad una funzione che calcola la sommatoria dei set, con GigiIntSet fallisce;

    b)in questo modo hai cambiato la proprietà che dice: "elements() restituisce un iteratore agli elementi"

    l'esempio l'ho preso dalle dispense che ho di ing. del sw


    riguardo al metodo stampa: lo puoi ridefinire, basta che stampi la cosa che deve stampare (questo dipende da come era nel padre), e non "Cicciocicci è andato al mare".

    Spero di aver scritto in italiano,
    Ciao!!
    Take it easy babe.. take it as it comes

  5. #5
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    Re: Moderazione

    Originariamente inviato da alka
    Hai un linguaggio di programmazione di riferimento o si tratta di una domanda puramente teorica?
    lo sto facendo in java..

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da bako
    lo sto facendo in java..
    Te lo chiedo perchè il linguaggio di programmazione, laddove sia applicabile, è d'obbligo nel titolo della discussione.

    Questo lo modifico io.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Utente di HTML.it L'avatar di bako
    Registrato dal
    Feb 2004
    Messaggi
    1,797

    Re: Moderazione

    Originariamente inviato da alka
    Te lo chiedo perchè il linguaggio di programmazione, laddove sia applicabile, è d'obbligo nel titolo della discussione.

    Questo lo modifico io.

    Ciao!
    si vabbè.. è un pò generale come discorso, più che java sarebbe OOP

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 © 2025 vBulletin Solutions, Inc. All rights reserved.