Private elementi u c++ klasama

Vrijeme je da se i ovaj forum malo probudi :slight_smile:

[quote]Zjev. Zovite me kad dođete do OOP.
[/quote]

i, evo sam dosao :slight_smile:

[code]#include <iostream.h>
#include <stdlib.h>

class klasa {
public:
klasa(){a = 202; b = 101; }
int a;
private:
int b;
};

int main()
{
klasa ova;
cout << *(&ova.a + 1) << ā€˜nā€™;

  return 0;

}
[/code]

Da, i sta sad ? :slight_smile:

Ma znas emiragu ā€¦

Veoma interesantan primjer, koji skoro da srusi legendu o enkapsulaciji podataka :slight_smile:

btw. ā€“ Vedrane, kako slusaju ucenici?

pa nista ako slucajno imas tu klasu na svoj radnom ekranu (tj. znas njenu strukturu),

onda mozes postati cracker citati private elemente te klase, koji mogu sadrzavati neke VAZNE informacije za tebe i drugeā€¦ itd.

p.s. svidja mi se ova novina u forumu, ovo sa novi pingvin itd. :slight_smile:

[quote]
p.s. svidja mi se ova novina u forumu, ovo sa novi pingvin itd. :)[/quote]

Nemojte puno vjerovat Emiragi, on je novi pingvin, a i kk je tek junior.
Ako vam treba savjet obratite se nekom senijoru :baeh: :smiley: :smiley: :smiley:

I ja se slazem da je interesantan primjer, koji da naci svoju primjenu. Ali primjena u crackerske
svrhe je pomalo, upitna. Prije svega, ova metoda, nazovimo je tako, mora zadovoljavati
tone nekih uslova, moramo tacno znati sve ā€œproceseā€ kroz koje elementi klase prolaze, i
najvaznije, kojeg je tipa varijabla.

Zar nije jednostavnije koristiti debugger odnosno disassembler ? :wink:

S.

[quote]
Nemojte puno vjerovat Emiragi, on je novi pingvin, a i kk je tek junior.
Ako vam treba savjet obratite se nekom senijoru [/quote]

Ko se bude uzdizao biće ponižen, ko se bude ponizio biće uzdignut. :slight_smile: :smiley:

[quote][quote]Nemojte puno vjerovat Emiragi, on je novi pingvin, a i kk je tek junior.
Ako vam treba savjet obratite se nekom senijoru [/quote]
Ko se bude uzdizao biće ponižen, ko se bude ponizio biće uzdignut. :slight_smile: :D[/quote]
i ja sam mislio poslati isti ovakav post, ali sam se u po frke predomislio da ne sipadem nekiā€¦ 8)

Zato ja i napisah skoro :slight_smile:

[quote][quote]
Nemojte puno vjerovat Emiragi, on je novi pingvin, a i kk je tek junior.
Ako vam treba savjet obratite se nekom senijoru [/quote]

Ko se bude uzdizao biće ponižen, ko se bude ponizio biće uzdignut. :slight_smile: :D[/quote]

Znam, znam. Najvaznija je cinjenica kako se nesto kaze. Uz osmijeh i salu mislim da to niko nece uzeti ozbiljno. :wink:
Nego vi lijepo nastavite sa klasama

Nista nije receno sto vec nije procitano, nista nije prepisano sto vec nije napisano :smiley: :stuck_out_tongue:

      cout << *(&ova.a + 1) << 'n'; 

Zanimljiv primjer (zlo)upotrebe adresnog operatora i pokazivačke aritmetike :lol:

C++ je monstruozan, nema Å”ta, ali to ne znači da OOP nevalja (niti da je s druge strane neÅ”to ā€œrevolucionarnoā€). 80tih su mislili da će to spasiti svijet, tj. softver (oooo, kako su pogrijeÅ”ili, samo programiranje u C-u može spasiti svijet 8) )

Kako bi gornji primjer uradio u modernom OO programskom jeziku? Recimo Objektnom Pascalu (aka Delphi), (vrlo) vjerovatno tek uz pomoć asemblera (ili malo petljanja sa PChar). Problem i postoji zato Å”to je C++ naslijedio ā€œopuÅ”tenā€ stav prema ā€œračunskimā€ operacijama sa pointerima (ma Å”ta to značilo). Delphi ima poboljÅ”an stav (mogu se sabirati samo pokazivači tipa PChar), to je ipak dovoljno da onemogući gore navedene egzbicije.

P.S.
OOP je viÅ”e metodologija programiranja nego neka nova revolucija/pravac u programiranju. To se ostvarilo sa par sintaksnih dodataka postojećim jezicima. Å to se tiče C-a, ne znam Å”ta se tu trebalo dadavatā€™ :lol: ljudi (GTK+) se sasvim dobro snalaze i sa C-om (dok god kompajler ā€œ(u)mećeā€ struct u struct na Jedini Ispravan Način ā„¢)

Kod mene ovo radi u Delphi(ju) 4:

// --- //

type
  klasa = class
     constructor Create;
  public
     a: integer;
  private
     b: integer;
  end;
  pint = ^integer;

// --- //

constructor klasa.Create;
begin
   a := 202;
   b := 101;
end;

// --- //

procedure test;
var ova: klasa;
begin
   ova := klasa.Create;
   ShowMessage(IntToStr(pint(integer(@ova.a)+sizeof(integer))^));
   ova.Destroy;
end;

// --- //

:slight_smile:

Ne bi Adis bio Adis kada ne bi malo filozofirao jel tako :smiley: To sto tvrdis da OOP nije revolucionarno je glupost :wink: Plus dodajmo k tome tvrdnju da samo programiranje u C-u moze spasiti svijet. Softver svakim danom postaje sve kompleksniji, i neke danasnje programe bi bilo nemoguce zamisliti bez OOP-a.
OOP jeste revolucionaran i jeste buducnost. To je jedan od nacina, ili mozda jedino trenutno poznat nacin da se komuniciranje sa gvozdjurijom ostvari covjeku bliskim nacinom i shvatanjem. A to sto se ljudi dobro snalaze sa GTK+ je to, da je to jedino koliko toliko koristen toolkit u C-u od sirih masa, mada vecna developera polako prelazi na njegovu C++ inacicu. Raditi sa C-om na necem vecem od 10000 linija koda je cisti mazohizam, i kontraproduktivnost (povecana vjerovatnoca greske), sto danas u informatickoj industriji i nije kao opcionalno rjesenje. Dakle OOP je Jedini Ispravan Način ā„¢.

PS.
ne brini se, ima i gorih mazohista, koji fino kodiraju prozore u assembleru
:smiley:

Sanel

Mozda nisi shvatio, pa evo da ponovim :lol:

[IRONIJA]
oooo, kako su pogrijeŔili, samo programiranje u C-u može spasiti svijet 8)
[/IRONIJA]

Ne tvrdim ja da OOP nije revolucionarno, to tvrde ljudi ā€œvicnijiā€ programerskom zanatu od mene (npr. uvazeni prof. dr Niklaus Wirth je to i demonstrirao na projektu Oberon)

Ljudi se danas ponasaju kao da se OOP pojavilo sa C++ (a ne 1967 sa Simulom!). Znaci 35 godina OOP-a, a ja bogami ne vidim neke posebne rezultate, ta revolucija se brate nesto otegla :rolleyes: A za to vrijeme kompleksnost softvera raste, a ono sto jos vise raste je broj gresaka po ā€œjediniciā€ koda.

P.S.

KK,

Decko, ti si fakat talentovan, covjek ti da ā€œfinā€ jezik a ti nadjes nacin da ga demoliras, he, he :wink:

Eh pa sadaā€¦, ironija se moze izraziti na stotine nacina, a ne na nacin obicnog potvrdjivanja.
Koji ce to citatelj skontati sta se piscu vrzmalo po glavi, ako to on ne predstavi adekvatnim sredstvima.
Tacno je da se OOP pojavio sa Simulom, ali nije bilo potrebe za njegovom potrebom, jer kao i
sto sam znas, pisanje u OOP-u malih programcica je bespotrebno komplikovanje. Dalje,
tim vremenom je asembler vladao, a znas kakvi si softverasi po pitanju usvajanja novih metoda i jezika.
Kako to ne vidis resuzltate OOP-a. Pa danas ti je skoro svaki moderan jezik (ako ne i svaki u
aktivnijoj upotrebi) OO, a stvaranje novih ide po istom principu.
A za greskeā€¦; one su proporcionalne kolicini koda, i moram ti reci da se kolicina gresaka poprilicno smanjila. ā€œBezgresanā€ kod je, barem za sada, nemoguce postici, a vjerovatnoca
da se to postigne u daljnjoj buducnosti je veoma mala.