Quali proprietà ha un linguaggio orientato agli oggetti? [chiuso]

2

Al momento sto lavorando a un gioco e volevo aggiungere supporto per lo scripting. A causa del tentativo di mantenere l'intero codebase nel c # gestito (Escluso Monogame), sto usando un linguaggio personalizzato per lo scripting (non esistono solo implementazioni gestite di Lua ... eccetto AluminumLua che è incompleto).

In un tale linguaggio, dovrebbero esistere disposizioni di base. Questi includerebbero:

  • Oggetti / Proprietà / Variabili
  • float e stringhe
  • Funzioni
  • condizionali
  • Loop

Mi mancano le parti principali di un linguaggio orientato agli oggetti di base?

Modifica Come ho sottolineato i commenti, sarebbe molto meglio finire l'implementazione incompleta di Lua per C # piuttosto che progettare il mio linguaggio ... che è quello che farò. Tuttavia, sono ancora curioso di sapere quali sono le proprietà di un linguaggio orientato agli oggetti. Quindi, quali proprietà ha un linguaggio OO?

Alcune definizioni di orientamento agli oggetti (di nuovo, deciso nei commenti):

Combinare lo stato di un oggetto con il suo comportamento.

Un linguaggio orientato agli oggetti è un metodo per combinare lo stato di un oggetto (le sue proprietà) con il comportamento (funzioni).

L'orientamento dell'oggetto sta definendo i dati (come una struttura C) e fornendo metodi specifici per interagire con esso (la funzione ChangeValue), piuttosto che dare alla persona che utilizza quel codice la possibilità di modificare qualsiasi parte, inclusi i componenti "interni". / p>

L'orientamento degli oggetti è solo un modo per ordinare i dati (che saranno rappresentati in binario) in modo più chiaro per un programmatore e per proteggerli da un uso errato (ad esempio impostando un carattere anziché un byte in una funzione).

    
posta Colorfully Monochrome 05.09.2014 - 02:20
fonte

2 risposte

1

L'idea alla base della programmazione orientata agli oggetti è l' incapsulazione e nascondere le informazioni dei dati e delle funzioni che operano su quei dati all'interno di oggetti . Piuttosto che costruire una struttura dati aperta (pensa tradizionale C struct ) e passare un puntatore alle funzioni, inserisci le funzioni nella struttura e chiama direttamente quelle funzioni.

Tutto il resto si basa su questi concetti fondamentali, ma se dovessi nominare il minimo indispensabile che rende un linguaggio OO, l'incapsulamento e l'occultamento delle informazioni lo sono.

  • incapsulamento significa che alcune strutture contengono dati e funzioni: sono contenute dall'oggetto.

  • L'occultamento delle informazioni è l'idea che i dati di un oggetto non siano direttamente accessibili all'esterno. Deve essere manipolato o utilizzato tramite le sue funzioni.

Ci sono altre funzionalità che non sono concetti di OO di base, ma estenderle in un modo che è utile e sono spesso incluse:

  • Ereditarietà : un oggetto può estendere un altro oggetto, ereditandone i dati e le funzioni e fornendone di nuovi. Questo è legato al principio di sostituzione di Liskov dove una sottoclasse deve essere in grado di prendere il posto di una superclasse. L'idea è che estendendo una superclasse, una classe può definire un comportamento aggiuntivo o addirittura cambiare l'implementazione della superclasse fintanto che aderisce al contratto della sua interfaccia.

  • Polymorphism : relativo all'ereditarietà, in cui le sottoclassi hanno comportamento diverso in conformità con un'interfaccia comune. L'idea è che (almeno con il polimorfismo statico, comunemente presente in Java, C # e C ++) se hai bisogno di un oggetto che fa qualcosa, puoi prendere un oggetto con una determinata interfaccia e aspettarti un comportamento diverso in base alla sua implementazione e non ti interessa quale sia l'implementazione .

Molte lingue aggiungono sempre più funzioni, ma queste sono le basi.

    
risposta data 05.09.2014 - 06:01
fonte
-4

proprietà del linguaggio orientato agli oggetti sono:

- > incapsulamento - > astrazione - > Eredità - > polimorfismo

Main Thing è Object and Classes

Qualsiasi cosa nella lingua orientata agli oggetti convertita in oggetti

    
risposta data 05.09.2014 - 08:02
fonte

Leggi altre domande sui tag