Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA
Rullo di lavaggio dei pavimenti abbinato a un potente motore da 28.000 Pa e a bracci esterni che si estendono: queste, e molte altre, le caratteristiche tecniche di Z60 Ultra Roller Complete, l'ultimo robot di Mova che pulisce secondo le nostre preferenze oppure lasciando far tutto alla ricca logica di intelligenza artificiale integrata
Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-04-2009, 14:10   #1
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
[C#]Dubbio Interfacce/ereditarietà

Ciao

Riprendo un 3d che non riesco più a trovare che ho aperto qualche tempo fa (sorry).

Ho un grosso dubbio sulla comprensione del concetto di interfaccia.

In sostanza, dovendo gestire delle anagrafiche (di tipi diversi), stavo ragionando così:

Codice:
interface IAnagrafica
{
   void add(Anagrafica anagrafica);
   void update(Anagrafica anagrafica);
   void deleteLogical(Anagrafica anagrafica);
   Anagrafica getById(int id);
   Anagrafica getByFilter(string filter);
   ICollection<Anagrafica> getByDomain(string domain);
}
Codice:
public class Anagrafica : IAnagrafica
{

     //iniziano i dubbi:
}
...con la premessa che so che devo implementare tutti i metodi che sono presenti nell'interfaccia.....


Ho due tipi di anagrafica: Anagrafica Persone e Anagrafica Fornitori

Seguendo la regola "is-a", AnagraficaPersone e AnagraficaFornitori, seppur abbiano pochi campi in comune "sono" oggetti di tipo Anagrafica. Ho pensato quindi che :

Codice:
public class AnagraficaPersone : Anagrafica
{
}

public class AnagraficaFornitori : Anagrafica
{
}
Non ho ancora ben chiaro come debba definire l'entità generica "Anagrafica".

Pensavo di definire in Anagrafica solo ciò che ho definito nell'interfaccia, e successivamente, far ereditare i metodi di Anagrafica ad AnagraficaPersone ed AnagraficaFornitori. I campi di queste ultime però, essendo diversi fra di loro, li avrei definiti solo al loro interno.

Che ne pensate?

Grazie

RaouL.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2009, 14:26   #2
qwerty86
Senior Member
 
L'Avatar di qwerty86
 
Iscritto dal: Jun 2007
Messaggi: 1232
Si credo vada bene così!
__________________
Cpu: Amd 64 X2 5200+ - Mobo:M2N32SLI DELUXE - Ram: Corsair xms2 800 mhz kit 4gb - SK Video: Gaiward GTS250 - Ali : Enermax Liberty 500 Wat - Mast DVD: 2 Nec AD-5170A - Case : Thermaltake Armor+ - Dissipatore: Thermaltake V1 Notebook: Sony Vaio VGN-Fe21M-Pda: Htc Diamond |Il mio sito|Flickr| Stanco del solito forum? Vieni a parlare di fotografia su Fotoni
qwerty86 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2009, 14:52   #3
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Ciò che devi definire nell'interfaccia Anagrafica non è l'insieme delle caratteristiche comuni a tutte le classi che sono delle anagrafiche ma l'insieme delle caratteristiche necessarie affinchè degli oggetti di tipo anagrafica possano "comunicare" con oggetti di tipo diverso senza perdere la propria identità esclusiva.

Tutte queste caratteristiche saranno anche le caratteristiche che avranno le anagrafiche.

Senza un'idea di come siano fatti gli oggetti che devono usare le anagrafiche ogni insieme di caratteristiche comuni a tutte le anagrafiche concrete è valido.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2009, 15:05   #4
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Bene...

ho ampliato così:

Codice:
using System;
using System.Collections.Generic;
using System.Text;
using Employees.Interfaces;

namespace Employees.Entities
{
    public class Anagrafica : IAnagrafica
    {
        private int id;
        private string filter;
        private string kind;
        private bool isActive;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }

        public string Filter
        {
            get { return filter; }
            set { filter = value; }
        }

        public string Kind
        {
            get { return kind; }
            set { kind = value; }
        }

        public bool IsActive
        {
            get { return isActive; }
            set { isActive = value; }
        }

        public void Add(Anagrafica anagrafica)
        {
            throw new NotImplementedException();
        }

        public void Update(Anagrafica anagrafica)
        {
            throw new NotImplementedException();
        }

        public void RemoveLogical(Anagrafica anagrafica)
        {
            throw new NotImplementedException();
        }

        public Anagrafica GetById(int id)
        {
            throw new NotImplementedException();
        }

        public Anagrafica GetByFilter(string filter)
        {
            throw new NotImplementedException();
        }

        public ICollection<Anagrafica> GetByKind(string kind)
        {
            throw new NotImplementedException();
        }

    }
}
Codice:
using System;
using System.Collections.Generic;
using System.Text;

namespace Employees.Entities
{
    public class AnagraficaDipendenti : Anagrafica
    {


        #region Incapsulamento

        private string nome;
        private string cognome;
        private string sesso;
        private DateTime dataNascita;
        private string comuneNascita;
        private string provinciaNascita;
        private string stato;
        private string codiceFiscale;
        private string comuneResidenza;
        private string provinciaResidenza;
        private string indirizzo;
        private string cap;
        private string email;

        public virtual string Nome
        {
            get { return nome; }
            set { nome = value; }
        }

        public virtual string Cognome
        {
            get { return cognome; }
            set { cognome = value; }
        }

        public virtual string Sesso
        {
            get { return sesso; }
            set { sesso = value; }
        }

        public virtual DateTime DataNascita
        {
            get { return dataNascita; }
            set { dataNascita = value; }
        }

        public virtual string ComuneNascita
        {
            get { return comuneNascita; }
            set { comuneNascita = value; }
        }

        public virtual string ProvinciaNascita
        {
            get { return provinciaNascita; }
            set { provinciaNascita = value; }
        }

        public virtual string Stato
        {
            get { return stato; }
            set { stato = value; }
        }

        public virtual string CodiceFiscale
        {
            get { return codiceFiscale; }
            set { codiceFiscale = value; }
        }

        public virtual string ComuneResidenza
        {
            get { return comuneResidenza; }
            set { comuneResidenza = value; }
        }

        public virtual string ProvinciaResidenza
        {
            get { return provinciaResidenza; }
            set { provinciaResidenza = value; }
        }

        public virtual string Indirizzo
        {
            get { return indirizzo; }
            set { indirizzo = value; }
        }

        public virtual string Cap
        {
            get { return cap; }
            set { cap = value; }
        }

        public virtual string Email
        {
            get { return email; }
            set { email = value; }
        }

        #endregion

        #region Costruttori
        
        public AnagraficaDipendenti()
        {
        }

        public AnagraficaDipendenti(string cognome, string nome, string sesso,
            DateTime dataNascita, string comuneNascita, string provinciaNascita,
            string stato, string codiceFiscale, string comuneResidenza,
            string provinciaResidenza, string indirizzo, string cap, string email,
            bool isActive)
        {
            this.cognome = cognome;
            this.nome = nome;
            this.sesso = sesso;
            this.dataNascita = dataNascita;
            this.comuneNascita = comuneNascita;
            this.provinciaNascita = provinciaNascita;
            this.stato = stato;
            this.codiceFiscale = codiceFiscale;
            this.comuneResidenza = comuneResidenza;
            this.provinciaResidenza = provinciaResidenza;
            this.indirizzo = indirizzo;
            this.cap = cap;
            this.email = email;
        }
        #endregion

        #region Methods
        
        #endregion



    }
}
Non riesco a capire come implementare il metodo "Add" di Anagrafica per AnagraficaDipendente.

Grazie mille

RaouL.


P.S.:

@PGI-Bis : non avevo ancora letto il tuo commento .
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2009, 15:19   #5
mindwings
Senior Member
 
L'Avatar di mindwings
 
Iscritto dal: Dec 2005
Messaggi: 1278
Quote:
Originariamente inviato da RaouL_BennetH Guarda i messaggi
Ciao

Riprendo un 3d che non riesco più a trovare che ho aperto qualche tempo fa (sorry).

Ho un grosso dubbio sulla comprensione del concetto di interfaccia.

In sostanza, dovendo gestire delle anagrafiche (di tipi diversi), stavo ragionando così:

Codice:
interface IAnagrafica
{
   void add(Anagrafica anagrafica);
   void update(Anagrafica anagrafica);
   void deleteLogical(Anagrafica anagrafica);
   Anagrafica getById(int id);
   Anagrafica getByFilter(string filter);
   ICollection<Anagrafica> getByDomain(string domain);
}
Non ho capito il significato dei metodi, stando alla definizione di wikipedia
un'anagrafica e' un archivio contenente i dati anagrafici del soggetto interessato. Ad un'anagrafica e' possibile aggiungere un'altra anagrafica? (metodo add?) Che significa deleteLogical?
Il fatto che ci siano poi 3 metodi get mi fa pensare che IAnagrafica e'solo un'involucro a piu' Anagrafiche(Ma l'anagrafica non e' unica?)...


EDIT: Ho appena visto l'implementazione... Tutti quei private mi sembrano inutili dato che fornisci le chiavi d'accesso e modifica get e set potresti mettere
direttamente i campi come public...
__________________
Non esistono grandi uomini, solo grandi ambizioni , realizzate da qualcuno che si è alzato dalla sedia per realizzarle!

Ultima modifica di mindwings : 14-04-2009 alle 15:26.
mindwings è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2009, 15:24   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da RaouL_BennetH Guarda i messaggi
Riprendo un 3d che non riesco più a trovare che ho aperto qualche tempo fa (sorry).
Eccoti il link, casomai ti servisse ancora: http://www.hwupgrade.it/forum/showthread.php?t=1956932
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2009, 15:31   #7
RaouL_BennetH
Senior Member
 
L'Avatar di RaouL_BennetH
 
Iscritto dal: Sep 2004
Messaggi: 3967
Quote:
Originariamente inviato da mindwings Guarda i messaggi
Non ho capito il significato dei metodi, stando alla definizione di wikipedia
un'anagrafica e' un archivio contenente i dati anagrafici del soggetto interessato. Ad un'anagrafica e' possibile aggiungere un'altra anagrafica? (metodo add?) Che significa deleteLogical?
Il fatto che ci siano poi 3 metodi get mi fa pensare che IAnagrafica e'solo un'involucro a piu' Anagrafiche(Ma l'anagrafica non e' unica?)...
Forse il nome che ho usato per l'interfaccia non è il più azzeccato.

con add e deleteLogical intendevo semplicemente aggiungere un'anagrafica che può essere di due tipi:

add(AnagraficaPersona)
oppure
add(AnagraficaFornitore)

ma le potrei anche chiamare semplicemente: Persona e Fornitore.

Per i metodi get:
mi sembrava il minimo utilizzare un metodo che mi identificasse il record. Per lo stringFilter invece, ho pensato che un utente potrebbe fare una ricerca su un qualsiasi campo di un'anagrafica e quindi, anzichè preventivare un "where or, or, or" per ciascuna campo, passo di volta in volta il valore selezionato dall'utente.

per il 'deleteLogical' intendo semplicemente non fare mai una cancellazione fisica ma settare a false o a zero un campo. Dove questo campo ha valore false, il record non verrà restituito ma potrà successivamente essere riattivato.


EDIT:

aggiungo anche che:

l'applicazione si interfaccia ad un db.
Nel db ci sono diversi tipi di anagrafiche(servizi, fornitori, contatti, dipendenti, etc..)
Per questo mi sembrava buona l'idea di avere una interfaccia implementata da un'unica classe base (anagrafica) e che le altre estendessero quest'ultima.
__________________
Dai wafer di silicio nasce: LoHacker... il primo biscotto Geek

Ultima modifica di RaouL_BennetH : 14-04-2009 alle 15:59.
RaouL_BennetH è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Mova Z60 Ultra Roller Complete: pulisce bene grazie anche all'IA Mova Z60 Ultra Roller Complete: pulisce bene gra...
Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Rinvii a catena, Marvel 1943: Rise of Hy...
Xiaomi inaugura uno spazio dedicato ai f...
Rilasciate le specifiche di Bluetooth 6....
L'obiettivo che mette tutto a fuoco: la ...
Meta avrebbe raccolto fino al 10% dei ri...
NVIDIA DGX Spark e videogiochi? Una pess...
Serie Oppo Reno15 confermata: arriva il ...
UPDF 2025: l'editor PDF che fa (quasi) t...
Partono altri sconti pesanti su Amazon, ...
OpenAI senza freni: centinaia di miliard...
Blink Mini 2 da 34,99€ 15,90€ (-55%) su ...
Altro che AGI, la superintelligenza di M...
Il nuovo ECOVACS DEEBOT T30C OMNI GEN2 s...
GeForce RTX 50 SUPER in ritardo o persin...
HYTE X50: il case dalle linee arrotondat...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:28.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v