Kezdőoldal » Számítástechnika » Programozás » Laikusként oop -ben a "class"...

Laikusként oop -ben a "class" nekem olybá tűnik, mint általában a függvények a procedurális prg-ozásban. Mi a fő eltérés?

Figyelt kérdés

[link]

Néztem oktatóvideókat az oop-ről, mivel nem értek hozzá, ezért kérdezném, mi a fő eltérés az oop és a procedurális programozás között?

Első blikkre elég hasonlónak látszik a kettő, az oop-ban a class olyasminek látszik számomra egyelőre, mintha függvény volna, amit átvehetnek az objektumok. Kb ezt csináljuk a procedurálisban is, nemde? Vagy van valami lényegi eltérés a kétfajta megközelítés között?



márc. 11. 06:23
1 2
 1/12 anonim ***** válasza:
78%

Nem. Egy osztály lényege, hogy egységbe be zár adato(ka)t és a hozzájuk tartozó eljárásokat, metódusokat.

Vagyis egy osztály számtalan eljárást tartalmazhat.

márc. 11. 07:14
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:

Ha arra vagy kíváncsi, mi a különbség: pricesurális programozásnál a programot parancsok soraként írom meg, változókkal, feltételekkel, elágozásokkal, ciklusokkal stb.

OOP-nél az objektumokkal, osztályokkal való műveletek, illetve az obkektumok egymás közötti kommunkációjában van megvalósítva az egész. Megjegyzem, az OOP is rendszerint tartalmaz procedurális megoldásokat.

márc. 11. 07:50
Hasznos számodra ez a válasz?
 3/12 Szikszai.B ***** válasza:
A class egy adattípus, akár csak egy struktúra, vagy egy record. Ha nagyon akarod, gondolhatsz a classra úgy, mint ha egy kibővített struct lenne.
márc. 11. 08:07
Hasznos számodra ez a válasz?
 4/12 anonim ***** válasza:
29%
Még csak nem is hasonlítanak.
márc. 11. 08:14
Hasznos számodra ez a válasz?
 5/12 anonim ***** válasza:
20%

"mivel nem értek hozzá, ezért kérdezném, mi a fő eltérés az oop és a procedurális programozás között?"


Mi lenne ha előbb megpróbálnád megérteni az OOP lényegét mielőtt "laikusként" teljesen baromságokon kezdesz el filozofálni?

márc. 11. 09:20
Hasznos számodra ez a válasz?
 6/12 anonim ***** válasza:
55%

Ahogy előttem már írták, az OOP lényege az encapsulation, magyarul: egységbe zárás.

Bizonyos, összetartozó adatokat (adat) és a rajtuk végzett műveleteket (függvény) egységként kezeljük, ez az osztály.

A másik lényege az OOP-nek a prototípus gyártás és a példányosítás lehetősége, amivel sok időt meg lehet spórolni. Ennek csírája ugyan megjelent a procedurális programozásban is, de nem volt ennyire rugalmas, nem lehetett kihasználni a lehetőséget például futásidőben sem. Az OOP viszont ezt biztosítja.


Összességében az OOP azért előnyös, mert a fejlesztés során a legtöbb problémát az okozza, hogy a jó kód közé bekerül a rossz is és procedurális paradigma szerint írt kódból a hibákat nehéz kiszűrni.

Viszont az OOP az osztály hierarchiával, azt egységbe zárással ennek a gondnak a kezelésére jó lehetőséget nyújt.

márc. 11. 10:16
Hasznos számodra ez a válasz?
 7/12 anonim ***** válasza:
0%

Bár rég nem foglalkoztam már ezzel és lehet ez nem lesz új, inkább csak kicsit más megfogalmazása a fentebb elhangzottaknak.


Ha van egy osztályod már, akkor anélkül hogy az átírnád, új osztályba emelheted és ott átírhatod, ami nem tetszik letilthatod belőle. Sőt akár több osztályt is össze lehet olvasztani eggyé kb mintha a nyomtató és szkennerből lenne egy multifunkciós géped.


Szóval átláthatóság, újrafelhasználhatóság is nagy előnye.

márc. 11. 10:51
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:

Vegyünk egy példát. Legyen egy class, aminek magyarosan az a neve, hogy Szamurály. Ezt ugye példányosítani kell "new" kulcs szóval, vagy az adott nyelv szerint.


Milye lehet a Szamurálynak? Legyen például: élete, támadó pontja, fáradsága. Ezeket feltudod venni 1-1 osztály szintű változóiba azaz attribútumai közé.

Tehát minden egyes új példánynak (amit a new-val csinálsz) külön-külön lesz ilyen értéket. Azaz 3x new, akkor 3 Szamurályod lesz.

A Szamurály class-ba felvehetsz függvényeket/metódusokat, hogy mit tegyen az a Szamurály. Ezekben a metódusokban this-el (vagy az adott nyelv szerinti móddal) éred el az aktuális (futás időben) Szamurályod saját attribútumait.


Tegyük fel, hogy az egyik szamurály megsebzi a másikat. Skiccelek egy kódot:


function void attackBy(Szamurály enemy) {

... this.hp - enemy.getAttackPoint();

}


Tehát egy:

var szamurály1 = new Szamurály()

var szamurály2 = new Szamurály()

samurály1.attackBy(szamurály2);


Azt eredményezi, hogy az 1-esnek kevesebb élet pontja lesz, mint a 2-esnek.


Persze bevezethető kard távolság vagy egy "térképen" helyezzük el ezeket a Szamurályokat és különböző feltételek bentén támadhatnak csak egymásra.


Ez volt a játék része, de gyakorlatban munka világában különböző felelősségeket társítunk hozzá. Minden class célzottan egy feladattal foglalkozzon. Ez nem azt jelenti, hogy egyetlen metódusa lehet csak. Pl. Egy felhasználó regisztrációra is számos ilyet lehet írni.


Azaz 1 class ami fogadja a kéréset (jellemzően XxxxController a neve), 1 class ami felhasználókat menedzselést végzi, hogy létezik-e már ilyen, menti az újat, stb.., de neki nem felelőssége az SQL kérések kezelése (csak az "üzleti logika"), az SQL-re van egy másik class (ami jellemzően XxxxRepository).

márc. 11. 23:30
Hasznos számodra ez a válasz?
 9/12 anonim ***** válasza:
Nagyon pongyolán megfogalmazva: az osztály olyan, mint ha structokat és eljárásokat egybegyúrnál.
márc. 12. 08:27
Hasznos számodra ez a válasz?
 10/12 A kérdező kommentje:
Köszönöm a válaszokat! :) Nagyon régen programoztam utoljára, és nem rémlik, mi a stuct?
márc. 16. 02:31
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!