Una domanda per gli esperti di OOP. - pagina 18

 

Unafunzione virtuale è un modello di funzione che è memorizzato in una classe base e può essere implementato solo nelle classi discendenti. Le classi possono anche essere virtuali. Le classi virtuali che contengono funzioni virtuali sono chiamate "interfacce". Insieme implementano uno dei principali meccanismi OOP - il polimorfismo.

Solo in pratica, non capisco dove metterlo...

 
Georgiy Merts:

Perché dovrebbe essere così?

Il kernel globale e l'OOP non si escludono a vicenda.

Solo gli elementi delle finestre dovrebbero essere incapsulati all'interno delle classi delle finestre, non "giacere in giro per tutti da vedere". In modo che nessuno possa accidentalmente "entrare nel posto sbagliato". Cambiare una variabile e fare un errore sulla sua posizione all'interno di un enorme array globale è molto facile, mentre è molto più difficile interrogare l'interfaccia giusta e poi cambiare la stessa variabile nell'oggetto giusto e fare un errore.

Ahimè, si escludono a vicenda. Un kernel globale implica una visibilità globale che rimuove la necessità di

(1) Nell'incapsulamento del codice. Perché, quando tutto è accessibile da qualsiasi luogo?

(2 ) Sovraccarico di funzioni. Perché quando è più facile fare il lavoro in uno, rendendo i risultati universalmente visibili e accessibili?

(3) Polimorfismo. Perché nascondere diverse implementazioni sotto un template, quando una sola unità può fare il lavoro di quelle varianti di template? La quantità di codice sarebbe inferiore e la sintassi sarebbe molte volte più semplice.

L'intero punto dell'OOP sta in quanto segue:

1. Scarico della memoria umana. (È scaricato male, c'è troppa sintassi).

2. Distribuzione del lavoro comune all'interno di un team (tutti conoscono un pezzo di codice, quindi ci saranno problemi di costruzione e debugging).

3. Portabilità del codice. (Questo è davvero un vantaggio).

4. Marketing. Distribuzione e vendita di ambienti di sviluppo, librerie, attraverso la pubblicità di vari gadget.

 
Реter Konow:

Ahimè, escludente. Un kernel globale implica una visibilità globale, che rimuove la necessità di

(1) Nel codice incapsulato. Perché, quando tutto è accessibile da qualsiasi luogo?

(2 ) Sovraccarico di funzioni. Perché quando è più facile fare il lavoro in uno, rendendo i risultati universalmente visibili e accessibili?

(3) Polimorfismo. Perché nascondere diverse implementazioni sotto un template, quando una sola unità può fare il lavoro di quelle varianti di template? La quantità di codice sarebbe inferiore e la sintassi sarebbe molte volte più semplice.

L'intero punto dell'OOP è il seguente:

1. Scarico della memoria umana. (È scaricato male, c'è troppa sintassi).

2. Distribuzione del lavoro comune all'interno di un team (tutti conoscono un pezzo di codice, quindi ci saranno problemi di costruzione e debugging).

3. Portabilità del codice. (Questo è davvero un vantaggio).

4. Marketing. Distribuzione e vendita di ambienti di sviluppo, librerie, attraverso la pubblicità di diversi espedienti.

Chi sei e cosa vuoi dimostrare? Che l'OOP è un male e un mucchio di roba in un posto è un bene? È solo per questo che hai creato questo thread? O vuoi aumentare il tuo ego lodando la tua super-memoria? Mi sembra il tuo alter ego. Niente di più.
Allora il thread perde il suo significato pratico - può essere intitolato "Guardatemi". È inutile.

Tutto quello che ti viene detto lo metti subito in discussione, senza dimenticare di aggiungere come sei, e come stai facendo, e come tutto è buono e migliore, e come tutto il mondo è stupido, e altre cose inerenti a un nichilismo disimparato e appesantito nella sua più bella manifestazione dell'uomo.

 
Artyom Trishkin:

Chi sei e cosa vuoi dimostrare? Che l'OOP è un male e un mucchio di roba in un posto è un bene? È solo per questo che hai creato questo thread? O vuoi aumentare il tuo ego lodando la tua super-memoria? Mi sembra il tuo alter ego. Niente di più.
Allora il thread perde il suo significato pratico - può essere intitolato "Guardatemi". È inutile.

Tutto quello che ti viene detto lo metti subito in discussione, non dimenticando di aggiungere come sei, e come stai facendo, e come tutto è buono e migliore, e come tutto il mondo è stupido, e altre cose inerenti ad un uomo disimparato, nichilista e oppresso nella sua più bella manifestazione .

Lo stai facendo di nuovo, vero?)) Credevo che avessi smesso di trollare i miei thread, non resisti alla tentazione di andare sul personale. Non posso...)

Quando una persona va sul personale, significa che non ha niente da dire sull'argomento. A quanto pare, gli argomenti sono di ferro.
 

L'argomento dell'OOP è semplice: la gente ne ha bisogno.

A questo punto, possiamo chiudere l'argomento.

 
Реter Konow:

Ahimè, escludente. Un kernel globale implica una visibilità globale, che rimuove la necessità di

(1) Nel codice incapsulato. Perché, quando tutto è accessibile da qualsiasi luogo?

(2 ) Sovraccarico di funzioni. Perché quando è più facile fare il lavoro in uno, rendendo i risultati universalmente visibili e accessibili?

(3) Polimorfismo. Perché nascondere diverse implementazioni sotto un template, quando una sola unità può fare il lavoro di quelle varianti di template? La quantità di codice sarebbe inferiore e la sintassi sarebbe molte volte più semplice.

L'intero punto dell'OOP sta in quanto segue:

1. Scarico della memoria umana. (È scaricato male, c'è troppa sintassi).

2. Distribuzione del lavoro comune all'interno di un team (tutti conoscono un pezzo di codice, quindi ci saranno problemi di costruzione e debugging).

3. Portabilità del codice. (Questo è davvero un vantaggio).

4. Marketing. Distribuzione e vendita di ambienti di sviluppo, librerie, attraverso la pubblicità di vari espedienti.

Quindi sono cose diverse.

Ho in qualsiasi EA (nella stessa Lega) - ci sono oggetti con portata globale.

Ma il vostro kernel può essere rappresentato come una classe che ha un mucchio di funzioni - getter setter, come risultato sarà abbastanza "OOP-like", ma con accesso globale. Anche se, naturalmente, senza i principali vantaggi di OOP - incapsulamento, ereditarietà e polimorfismo.

Per quanto riguarda ciò su cui poggia l'OOP - il primo dovrebbe essere completato non solo dall'offloading della memoria (e offloads molto bene), ma anche dall'offloading del supporto e della modifica del codice. E inoltre, è molto più facile riutilizzare gli sviluppi che sono in OOP-design che senza. A proposito, "4 - marketing" è solo una conseguenza di questo uso molto più facile.

 
Artyom Trishkin:

Tutto quello che ti viene detto, lo metti subito in discussione, senza dimenticare di aggiungere come sei, e come tutto è buono e migliore, e come tutto il mondo è un idiota, e altre cose inerenti a un nichilista disimparato e appesantito nella sua migliore manifestazione.

Artem, invidio la memoria di Peter...

Per non parlare del fatto che Peter ha cercato di offrire delle vere e proprie intuizioni.

 

Informativo, ma non per la lettura del topic-starterModelli OOP in metafore

puramente sul tema del contenuto:cosa sono gli anti-pattern?

 
Igor Makanu:

Informativo, ma non per la lettura del topic-starterModelli OOP in metafore

puramente sul tema del contenuto:cosa sono gli anti-pattern?

Il secondo articolo è più utile e, secondo me, una lettura obbligatoria per tutti, indipendentemente dallo stile di programmazione che praticano.
 
Реter Konow:

Unafunzione virtuale è un modello di funzione che è memorizzato in una classe base e può essere implementato solo nelle classi discendenti. Le classi possono anche essere virtuali. Le classi virtuali che contengono funzioni virtuali sono chiamate "interfacce". Insieme implementano uno dei principali meccanismi OOP - il polimorfismo.

Solo in pratica, non capisco dove metterlo...

Le funzioni virtuali sono quelle che possono essere sovrascritte in una classe derivata. un template è diverso in qualsiasi contesto.

Una particolare implementazione può trovarsi in una classe base. oppure no (se la funzione è puramente virtuale)

Le classi non possono essere virtuali, possono essere astratte. esiste l'ereditarietà virtuale, ma non c'è bisogno di preoccuparsene affatto.

l'interfaccia è, grosso modo, una classe astratta con nient'altro che funzioni puramente virtuali.

Le funzioni virtuali sono solo una parte del polimorfismo - polimorfismo dinamico.

Puoi farlo ovunque, basta che lasci passare tutto attraverso il tuo pensiero tabellare piatto.

Motivazione: