Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883

    domanda sulla programmazione OO

    Leggendo delle guide sulla programmazione ho trovato questa cosa

    OSSERVAZIONI SULL'OOL

    Supponiamo di avere una classe View per parlare con una classe Model abbia dovuto dichiarala al suo interno creando un legame con lei. Se in un altro progetto mi dovesse servire la classe View, devo portarmi dietro la classe Model, oppure devo modificare la classe View, e questo non è accettabile ed in contrasto con la filosofia della programmazione ad oggetti

    Bene quello che mi domando, se ho una classe view che deve comunicare con una classe model, se non posso creare un legame con lei, come si può fare?
    Cioè se ho due classi in un progetto che devono comunicare tra di loro come devo fare?

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    comunicare vorrebbe dire leggere attributi e chiamare metodi
    basta includere le classi nello stesso package e dichiarare gli attributi e i metodi protected per farglieli vedere

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    si ma mi dovrei portare sempre dietro sia la classe view che la classe model

  4. #4
    Se due classi devono comunicare devi prima definire quali informazioni devono scambiarsi.
    Lo scambio di informazioni può andare dal semplice accesso agli attributi alla notifica di avvenute modifiche in una classe che devono essere note all'altra classe.

    Nel caso dell'accesso agli attributi il problema si risolve molto semplicemente con i getter e setter.

    Nel caso in cui si vogliano notificare ad una classe degli eventi che avvengono nell'altra si può creare un legame tramite l'uso del pattern publisher-subscriber.

    Dichiarare le classi all'interno dello stesso package non ha nessuna utilità (almeno nel contesto delle due classi vista e modello).

    Non capisco perchè la vista deve essere interna al modello.

    Bye
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  5. #5
    Originariamente inviato da abcd1000
    si ma mi dovrei portare sempre dietro sia la classe view che la classe model
    Separa vista e modello.
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  6. #6
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    i package servono, altrimenti non esisterebbero
    se vuoi scrivere in modo decente devi fare attenzione ai package e alla dichiarazione dei metodi, mica devono sempre essere public

  7. #7
    Certo che i package servono, ma nulla ti vieta di aver il modello in un package e la vista in un altro. L'avere entrambi nello stesso package non è essenziale.
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    883
    ma nella frase che ho citato all'inzio c'è scritto

    Supponiamo di avere una classe View per parlare con una classe Model abbia dovuto dichiarala al suo interno creando un legame con lei.

    questa frase non vuol dire che nella classe view per usare un metodo della model ho istanziato un oggetto della classe model? cioè ho fatto una new()

    classe view

    ModelClass prova = new Model Class();


    se non posso fare la new come faccio ad usare i metodi della model nella classe view?

  9. #9
    Originariamente inviato da abcd1000
    ma nella frase che ho citato all'inzio c'è scritto

    Supponiamo di avere una classe View per parlare con una classe Model abbia dovuto dichiarala al suo interno creando un legame con lei.
    ops..ho letto male.

    questa frase non vuol dire che nella classe view per usare un metodo della model ho istanziato un oggetto della classe model? cioè ho fatto una new()
    No. E' esplicitamente detto dichiararla, non istanziarla. Vuol dire che all'interno della dichiarazione della classe View hai incluso quella della classe Model.

    classe view

    ModelClass prova = new Model Class();


    se non posso fare la new come faccio ad usare i metodi della model nella classe view?
    Questa non l'ho capita. Perchè non potresti istanziare un oggetto di tipo ModelClass??
    - "Boy, the food at this place is really terrible."
    - "Yeah, I know, and such ... small portions."

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2003
    Messaggi
    11
    Per utilizzarla puoi anche solo vederla come puntatore ( sti benedetti puntatori, usateli ).
    Definisci due classi A e B. In A crei un attributo che sia puntatore a B ( *pB ). Instanzi due ogetti:

    A mA;
    B mB;

    una volta creati agganci il puntatore di A a B, se preferisci tramite un metodo:

    A.*pB = &B;
    oppure
    A.SetPuntatore( B );

    SetPuntatore( B* p )
    {
    pB = p;
    }


    Questo dovrebbe essere soddisfacente.

    Ciaux

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