feed
top
crea forum
cerca
feed
forum
supporto
discussione
cerca
JEHOVA e la NUOVA GERUSALEMME > INIZIO <
Blog libero tutti possono commentare nella zona chiacchiere tutti possono dire la sua , la CHAT è libera tutti possono usarla
Cerca
INDICE Appunti sulla programmazione C++
Accedi
06) Allocazione della memoria differenze tra C e C++ capire cosa è la programmazione a oggetti
Messaggi
OFF
LINE
JehovaZorobabele
Post: 257
Post: 246
Registrato il: 02/03/2016
Registrato il: 03/03/2016
Sesso: Maschile
0
0
22/06/2016
11:23
Nuovi comandi e sistemi per la programmazioni ad oggetti le strutture
L’ allocazione della memoria nei programmi è una cosa importante nel C standard c’era le funzioni
malloc (), calloc() , realloc() poi free()
mentre qui in C++ ci sono
new e delete
che come nel C alloca la memoria dinamica la
new
serve per creare mentre
delete
cancella la stessa partizione di memoria creata in precedenza con new la sintassi di new è:
new tipo ;
Logicamente il tipo è il tipo di variabile o array che dobbiamo creare possiamo creare int char double ecc.. scrivendo
new unsigned int;
Con la parola chiave
delete
si rilascia questa memoria che prima abbiamo assegnato con
new
se si dimentica di de alloccare questa memoria andiamo alla fine con il non aver più memoria a disposizione per il nostro programma, perché più che una piccola variabile parliamo di grossi array quello che veramente mangia la memoria per cancellare questi basta scrivere :
delete [] array;
dove array è il nome del nostro vettore o array una volta eliminata la vecchia allocazione di memoria ora possiamo allocare la nuova memoria per nuovi lavori anche se questa memoria rimane frammentata
Per lavorare al meglio è consigliabile fare diverse funzioni in modo che il lavoro sia svolto in maniera che queste possono lavorare indipendenti, è meglio creare vari file uno per il
main.cpp
il cuore del programma, questo che va compilato, poi un altro deve essere un
file header.h
qui vanno inserite tutti i prototipi delle varie funzioni che saranno dichiarate con le strutture o classi e saranno inserite anche le varie variabili che saranno usate dentro queste funzioni , ricordiamo che la differenza tra struct e classe sta che la prima è pubblica mentre la seconda è privata , poi avremo un
terzo file sempre .cpp
dove sviluppiamo tutte le nostre funzioni che abbiamo dichiarato nel file Header.h questo nuovo file sarà
nome.cpp
, il compilatore che collega tutta la libreria noi dobbiamo solo
collegare il file h al main e all’ ultimo file creato
dove rimane tutte le funzioni il
file h viene incluso tramite #include"nome.h" e deve essere incluso anche dentro il file dove sono sviluppate le funzioni.
Il C++ vuole che il programma sia sviluppato in più file e che si usi i file header dove dichiarare le funzioni che a sua volta devono essere dichiarate tramiti classi o strutture perché nel C++ entra in gioco la visibilità del progetto, il file
header.h
deve far parte della libreria in modo che il compilatore per prima cosa va legge e vede cosa deve fare cosa deve allocare, in poche parole il compilatore deve vedere la struttura del programma per capire dove deve essere allocata la memoria e come funziona, prima nel C le funzioni erano chiamate fuori dalla struttura oggi con il C++ possono essere chiamate dentro la struttura senza problemi di sbagliare ora per richiamare le funzioni c’è l’ operatore della visibilità dello
scope
che è
::
cosi possiamo richiamare le funzioni membro che sono all’ interno della struttura o della classe :
struct
A
{
int a,b,c;
void
funz1(int);
int funz2(int l);
};
per richiamare la funzione membro 1 funz1()basta scrivere :
A::funz1()
{corpo della funzione }
In questo modo possiamo inserire diverse strutture o classi con diversi nomi ma al sui interno le stesse funzioni con i stessi nomi tanto il compilatore capisce tramite il nome della struttura di quale funzione membro parliamo
B::funz1()
, le funzioni globali possiamo sempre metterle all’ inizio del file che contiene il
main
, ma se usiamo le strutture o classi il compilatore stesso ci chiede il file
header .h
Nei nuovi file in C++ la chiamata delle funzioni membro viene per mezzo del
‘.’ Punto
contro nel C si doveva usare la
&
per poi inserire il nome della variabile o funzione come si usava con
scanf
, qui con il punto si apre una finestra di scelta
In C++ si parla di oggetto un oggetto è un indirizzo di memoria dove è registrato una variabile o una funzione questi diversi oggetti comunicano tra di loro e normalmente questi oggetti funzioni o variabili sono inseriti dentro le strutture o classi che ha loro volta vanno dichiarate dentro i file header nel C non era obbligatorio ma era consigliato fare cosi, nel C++ è stabilito in partenza di costruire le strutture dentro il file
header .h
Un file header secondo la regola del C++ si può scrivere solo le dichiarazioni e questo file va incluso in tutti i file del programma dentro il file dove si sviluppa le funzioni che possono essere diversi e nel file del main che deve essere solo uno
Per le definizioni è possibile dichiarare delle cose quante volte si vuole, ma ci deve essere una sola definizione per ogni cosa dichiarata inoltre non bisogna mai inserire il comando (
using namespace
) dentro un file
header
altrimenti si disattiva tutte le direttive della libreria standard e si carica tutto su e si vanifica tutto il lavoro del namespace
Con i File header nasce un problema se su ogni file
.cpp
(diverso dal main) creato dobbiamo inserire il rispettivo file header dove rimane le dichiarazioni delle funzioni , capita che lo stesso file lo carichiamo su diverse volte e questo quando capita il compilatore da errore cosi per non far creare casini
bisogna inserire dei flag di controllo
dentro lo stesso file header e questo grazie le direttive del preprocessore all’ inizio di ogni
header
scriviamo :
#ifndef HEADER_FLAG
#define HEADER_FLAG
Corpo del file
#endif //HEADER_FLAG
Dove
header_flag è il nome e l’ estenzione del file
che dobbiamo scrivere ecco un esempio per un file che si chiama
prova.h:
#ifndef PROVA_H
#define PROVA_H
Struct prova {
int a,b,c;
void prova(int a, double b);
};
#endif //PROVA_H
In questo modo con
#ifndef
se il compilatore trova già il file header con quel nome caricato , non lo carica per la seconda volta, cosi passa avanti altrimenti carica il nuovo file header
Accesso alle strutture e classi con
public private e protector
per prima cosa quando si usa uno di questi nomi vanno seguiti da 2 punti
private:
rende i membri di una struttura publici o privati cosi sono visibili o meno secondo i casi la struct è public mentre classe è private pero possiamo inserire altro modo come ci fa comodo e possiamo passare da uno stato all’ altro più volte dentro la struttura ora vediamo la parola private
Con la definizione
private
diciamo che questi membri della struttura sono private e nessuno eccetto noi può usarli cosi sono delle variabili o funzioni che rimane nascoste ma nello stesso tempo questi oggetti possono essere solo utilizzati dalle stesse funzioni usate dentro la stessa struttura , altre strutture dello stesso programma non può usare l’ oggetti dichiarati privati. Con la definizione
public
al contrario di private tutti possono usare l’ oggetti dichiarati public si possono usare anche da altre funzioni che sono descritte in altre strutture (sia esse struct o classe)
Per
protector
si indica oggetti
non private e non public
è una mezza via che può usare sia i private che i public si vedrà meglio quando si parla di eredità
Per
friend
vede e modifica gli oggetti
private
sia della stessa che non della stessa struttura , un
friend
può modificare un private ma prima deve essere riconosciuto che può farlo, è come dire quella funzione è un mio amico allora la posso utilizzare, se devo utilizzare una variabile dentro una funzione prima di passarla per friend devo dichiararla prima di dire questa variabile è
friend
la
devo dichiarare
E’ possibile costruire delle
friend nidificati
dove prima
bisogna dichiarare la struttura
,
poi la si dichiara friend
ed
in fine si definisce la struttura
esempio d’uso :
struct Contaminuti {
int a , b;
void inizio();
struct ore;
friend struct ore;
struct ore {
int minuti, secondi, ore ;
… ecc};
Sia la classe che la struttura sono sempre strutture di dati dove si concentra tutto quello che è la struttura del programma cosi se si deve fare qualche modifica o correzione è possibile farlo semplicemente da un unico posto
Le
Classi
sono nate per lavorare con gli
oggetti
ma più che altro per rendere
privato
quelle porzioni di programma che non si deve vedere e rendere un programma criptato e questo il nuovo compilatore può farlo dopo certamente moltissimi miglioramenti sulla ricompilazione dei programmi ecc… la
classe
parla in un linguaggio nuovo parla degli
oggetti ogni funzione ogni variabile è un oggetto
che fa già parte di una classe come ad esempio classe animale divisa in classi quadrupedi divisa in classe gatti, cani, cavalli già tutti questi animali hanno delle cose in comune sono quadrupedi sono animali vivono all’ aria aperta e amici dell’ uomo ma non e dentro l’ acqua che certamente una balena non fa parte di questa specie di classe come non fa parte a questa classe un gorilla
Il modo di vedere la nuova struttura rende la programmazione più marcata verso l’
oggetto
e verso quello che si deve
incapsulare
dentro le varie scatole in modo che ci sia una interfaccia o collegamento per tutti pubblico e una interfaccia privata nascosta
Ciao grazie da ByMpt-Zorobabele
Testo PDF aggiornato con questo ultimo capitolo inserito lo trovate :
http://www.freeforumzone.com/d/11266858/Elenco-figure-dei-comandi-della-programmazione-C-TESTO-PDF/discussione.aspx
Anche qui di queste discussioni che inserisco faccio un testo PDF da poter scaricare tutto il mio materiale è da utilizzare come desiderate per il testo PDF vedi cartella dedicata , ogni volta cambia ubicazione del testo allora cambio il file e il testo lo inserisco dentro la cartella < file aggiornato ad oggi >
http://www.freeforumzone.com/d/11266858/Elenco-figure-dei-comandi-della-programmazione-C-TESTO-PDF/discussione.aspx
1
5
MediaObject
1,00
1
1
Tag discussione
classe
struct
oggetti
programmazione
cpp programmazione
bympt-zorobabele
file header
file main
file tipo cpp
bliblioteca
funzioni
membri della strutture
strutture classi o struct
programmazione ad oggetti
Registrati
Accedi
INDICE Appunti sulla programmazione C++
Accedi
IL MIO PROFILO
LE MIE DISCUSSIONI
FORUM CHE SEGUI
LA MIA FORUM-CARD
MODIFICA FORUM-CARD
FAQ
TRADUCI
LOGOUT
Accedi
Registrati
FAQ
TRADUCI
Scatta o carica foto
Allega file
Inserisci link da url (card)
Incorpora url (YouTube/Twitter/...)
ACCETTA
RIFIUTA
Anteprima