Quali sono le responsabilità del metodo privato quando progettiamo la lezione in OOP?

2

In diversi libri di design ho letto che

  1. Identifica in primo luogo lo scopo della classe (astrazione).
  2. La classe dovrebbe fare solo una cosa (SRP).
  3. I metodi
  4. sono definiti come responsabilità della classe.

Secondo la mia comprensione, i metodi pubblici gestiscono le responsabilità della classe che richiede altre classi [cioè classi di interazione]

La mia domanda è: quali sono le responsabilità dei membri privati della classe? e come decidere quale metodo rendere privato?

Dai un'occhiata al mio codice

class calculator
 {
    private:
    long double operand_1;
    long double operand_2;
    long double result;

    int optr;
    int multiplier;

    Button One;
    Button Two;
    Button Three;
    Button Four;
public:
    calculator();

    const long double get_number_operator(const int=0);
    const long double calculate_number(const int [],const int);

    void show_calculator( );
    void calculations( );
    void clear_screen( );
    void show_back(const int);
    void show_about( );
    void show_time( );

Il metodo in pubblico è pubblico o possiamo metterlo in privato?

    
posta Narender Parmar 03.08.2017 - 12:34
fonte

2 risposte

4

I membri privati sono disponibili in due versioni:

  • I membri dati privati vengono utilizzati per memorizzare lo stato interno dell'oggetto
  • I metodi privati possono essere visti come blocchi di codice con nome che possono essere utilizzati da altri metodi della classe per adempiere alle proprie responsabilità.
    I metodi privati vengono in genere utilizzati quando diversi metodi devono eseguire esattamente lo stesso lavoro come parte della loro responsabilità (ad esempio la notifica agli osservatori esterni che l'oggetto è stato modificato) o quando un metodo viene suddiviso in passaggi più piccoli per la leggibilità.

Un metodo dovrebbe essere reso privato se altre classi non avrebbero motivo di sapere che il metodo esiste.

    
risposta data 03.08.2017 - 13:16
fonte
2

I membri pubblici sono l'interfaccia attraverso la quale il mondo esterno interagisce con questo oggetto.

I membri privati sono dettagli di implementazione che descrivono in che modo una classe soddisfa il suo scopo. Dal momento che sono privati, non influenzano il modo in cui l'altro codice interagisce con la nostra classe e quindi non fanno parte di un design più ampio. I membri privati sono usati per implementare i metodi pubblici. Quindi in pratica: qualsiasi membro creato deve essere privato se non è necessario per l'interfaccia esterna di quella classe.

A volte i metodi privati implementano alcune funzionalità che potrebbero essere modellate come una responsabilità a sé stante, che potrebbero essere riutilizzate in un altro contesto, o che è così complessa che si desidera testare direttamente l'unità. Può quindi avere senso estrapolare questi metodi in funzioni libere o in una classe a sé stante. Spesso si finisce con un numero di classi di utilità che non hanno nulla a che fare direttamente con la logica di business principale del software, ma sono necessarie per la logica di business per portare a termine il lavoro. Ad esempio: metodi per caricare dati da file, algoritmi astratti o adattatori ad altri sistemi. Molto spesso, puoi utilizzare le librerie esistenti per queste attività.

    
risposta data 03.08.2017 - 13:02
fonte