Ho letto che le chiacchiere sono completamente orientate agli oggetti. C++ è anche completamente orientato agli oggetti? se no .. allora perché così ??Il linguaggio C++ è completamente orientato agli oggetti?
risposta
No, non lo è. È possibile scrivere un programma C++ valido, ben codificato e ottimamente disegnato senza utilizzare un oggetto neanche una volta.
C++ supporta la programmazione orientata agli oggetti, ma OO non è intrinseco al linguaggio. In effetti, la funzione principale non è un membro di un oggetto.
In smalltalk o Java, non è possibile legare le scarpe (o scrivere "Hello, world") senza almeno una classe.
(Naturalmente, si può discutere su Java di essere un linguaggio completamente orientato agli oggetti troppo, perché le sue primitive (diciamo, int) non sono oggetti.)
Ha persino utilità che lo rendono un linguaggio di programmazione generico ad es. Modelli. Ma ho visto molti libri di testo a livello di scuola che associano C++ come linguaggio orientato agli oggetti. Il problema è quando gli autori lo fanno, i lettori (principalmente studenti) dimenticano convenientemente che il C++ si adatta anche a molti tipi di linguaggi di programmazione. – sjsam
Definire OOL. Se intendi usare le classi ecc, allora C++ supporta la programmazione OO in altri. Non c'è niente che ti impedisca di non usare le lezioni. Java OTOH, non consente solo le classi. (Sì, so che Java supporta FP.)
"Sì, so che Java supporta FP.". Questo è nuovo per me. Hai qualche esempio di FP in Java? –
Una semplice ricerca mi dà parecchi articoli. Uno di questi:
dirk. Penso che potresti voler dire che Java supporta la programmazione ** procedurale **? Ne? –
C++ contiene un dialetto "C" come sottoinsieme, che consente uno stile di codice puramente procedurale.
C++ non è un oggetto orientato linguaggio puro, e come già menzionato nulla ti costringe a usare i concetti OOP in C++. Il C++ è quello che tu chiami un linguaggio ibrido orientato agli oggetti, poiché è basato su C che è puramente un linguaggio procedurale.
Esempi di linguaggi orientati agli oggetti puri sono C# e JAVA.
Nessun di questi tipi di dati primitivi non obbedisce alla stessa semantica dei tipi di dati definiti dall'utente. Le operazioni su di esse non sono definite in termini di messaggi di passaggio e non possono essere sovraccaricate o ridefinite in una classe derivata. – Omnifarious
Penso che abbiate commentato il post sbagliato. ;) –
No, Omni sta dicendo che né C# né Java sono OO puri poiché hanno cose come int e long che sono * non * oggetti. – paxdiablo
No, non è un linguaggio puramente orientato agli oggetti. In particolare, i tipi di dati primitivi in C++ hanno regole che sono spesso diverse da tipi di dati che non sono primitivi. Inoltre è possibile avere funzioni che non sono associate a nessun tipo di dati. Ci sono una miriade di altri modi in cui il C++ non è un puro linguaggio orientato agli oggetti, ma questi sono due dei maggiori motivi.
Né Java né C# sono linguaggi orientati agli oggetti puri o perché hanno tipi di dati primitivi che non obbediscono alla stessa semantica dei tipi di dati 'oggetto'.
La risposta breve è no - Il C++ non è interamente linguaggio OO. Puoi scrivere "non esattamente" OOP usando C++ anche senza ricorrere all'utilizzo del sottoinsieme C. Uno di questi esempi è il tuo metodo principale, che non è contenuto in nessuna classe.
Il motivo principale è il fatto che C++ ha avuto origine da C - quando Stroustrup ha creato il linguaggio che intendeva creare una nuova versione di C (con classi). infatti ha cercato di presentare la sua creazione come il nuovo sapore di C (C84).
Le grandi argomenti le persone hanno nei confronti dichiarando C++ come "pura" OO è che richiede ancora almeno un non OO bit, main()
, e che non tutto è un oggetto (int
, long
et al).
Espone anche lo stato di un oggetto per la manipolazione senza utilizzare il paradigma di passaggio dei messaggi (membri pubblici). Questo rompe l'incapsulamento degli oggetti.
Java, d'altra parte, ha main()
come solo un metodo statico di una classe, quindi è più vicino ma contiene ancora oggetti non oggetti.
Smalltalk è la lingua franca normalmente considerata il più puro dei puri, ma non ne so abbastanza per commentare.
Io, tendono a lasciare quel tipo di argomenti per l'intellighenzia, mentre mi trovo con lo sviluppo di codice e fornire ai miei clienti :-)
In realtà non ha bisogno di main. È solo un noto punto di ingresso, quindi la riga di comando e (alcune) GUI non sono dove passare il controllo dopo il caricamento. –
Si * ha * bisogno di main, è richiesto dallo standard. – paxdiablo
certo che no !! Supporta tipi di dati intrinseci.
C++ non è altro che "C con classi". Posso ancora scrivere un programma in C e salvarlo come file .cpp. Quindi, la prova implicita dice "C++ non è un linguaggio puramente orientato agli oggetti".
- 1. Ruby è davvero un linguaggio completamente orientato agli oggetti?
- 2. Il linguaggio di programmazione C è orientato agli oggetti?
- 3. In che modo Ruby è completamente orientato agli oggetti?
- 4. Esperimento: C orientato agli oggetti?
- 5. MongoDB è orientato agli oggetti?
- 6. È orientato agli oggetti di Erlang?
- 7. C# è un linguaggio di programmazione orientato agli oggetti al 100%?
- 8. Qual è la differenza tra un linguaggio orientato ai componenti e orientato agli oggetti?
- 9. Reactjs - Orientato agli oggetti?
- 10. Python è diventato più orientato agli oggetti?
- 11. Il mio codice PHP è orientato agli oggetti?
- 12. Clojure è orientato agli oggetti al centro? (Polymorphism in seqs)
- 13. Domande multiple con Bokeh orientato agli oggetti
- 14. Suicidio orientato agli oggetti o cancellarlo;
- 15. utilizzando jQuery in modo orientato agli oggetti
- 16. Approccio orientato agli oggetti con AngularJS
- 17. Programmazione di un semplice grafo orientato agli oggetti in C++
- 18. Creare un oggetto callback in stile C orientato agli oggetti?
- 19. Python orientato agli oggetti con il server Flask?
- 20. Come si traduce il codice orientato agli oggetti in codice macchina?
- 21. Provare a modellare con javascript orientato agli oggetti
- 22. Conversione di PHP procedurale in PHP orientato agli oggetti
- 23. "Hello world" orientato agli oggetti tramite Windows Form in F #
- 24. orientato agli oggetti, come le strutture di database relazionali
- 25. Modo orientato agli oggetti per iterare attraverso un vettore std ::?
- 26. Javascript orientato agli oggetti - Come definire una classe all'interno di una classe? da un esempio C#
- 27. Qual è la differenza tra pacchetto, modulo e classe in Perl orientato agli oggetti?
- 28. Accesso agli oggetti di tipo C#
- 29. Il modo migliore per accedere agli oggetti COM da C#
- 30. Impedisci chiamate DB ripetute a causa dell'approccio orientato agli oggetti nell'app MVC3
"le chiacchiere sono completamente orientate agli oggetti", da dove hai letto questo? Solo curioso. –
Che cosa significa "completamente"? –
E Ruby? – ukanth