Visual Basic I. jegyzet

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Visual Basic I. jegyzet"

Átírás

1 Visual Basic I. Visual jegyzet Basic I. jegyzet Írta: Csala Péter Írta: Csala Péter

2 II-III. gyakorlat - osztályok, leszármaztatás Tartalom Alapfogalmak (osztály, névtér) Konstruktor(ok) Példányosítás Túlterhelés (overloading) Adattagok (fields), Tulajdonságok (properties) Ősosztály Interfész Delegálás (delegate)

3 Alapfogalmak -Osztály - Class Az osztályok, olyan egységbe zárt csomagok (encapsulation pack), amelyek mindent tartalmaznak, ami egy adott feladat elvégzéséhez szükséges. A dolog lényege az, hogy egy problémát több részfeladatra bontunk szét, és mindegyikhez egy külön csomagot hozunk létre, amelyeket akár többször is felhasználhatunk majd. Azáltal, hogy egységekre feldaraboltuk a megoldandó feladatot, a főprogramunk jobban átlátható lesz. Egy osztályban természetesen nem csak eljárásokat lehet tárolni, hanem tagfüggvényeket, objektumokat, stb.-t, vagyis bármit, ami a feladat elvégezéséhez szükséges. Ha egy előre definiált osztállyal dolgozunk, akkor nem is feltétlenül tudjuk, hogy hogyan is működik, nekünk elég csak annyit tudnunk, hogy mire használhatóak az egyes eljárásaik. Az osztályokra az öröklődés szabályai érvényesek. Vagyis ha van egy alaposztály (ősosztály), akkor abból örökölhetnek bizonyos tulajdonságokat az alosztályok (nem feltétlenül az összest, csak egy előre meghatározott részét), és kiegészíthetik saját, egyedi jellemzőkkel. Az osztályokra még a többalakúság is jellemző. Ez azt jelenti, hogy a paramétertől függően más eljárás hajtódik végre az osztályon belül, ezért nevezzük többalakúnak, vagy polimorfnak az osztályokat. Például, ha ki akarunk íratni egy váltózót vagy egy tömböt, akkor ugyanúgy adjuk át a paraméterként őket a megfelelő függvénynek, de a háttérben más eljárás hívódik meg, amiről nekünk nem kell tudnunk! Az osztályoknak még egy előnyük van az újrahasznosíthatóság. Ez a leszármaztatásnál 1 jelenik meg, úgyis egy osztályt több alosztálynak is megadhatunk ősosztályként! -Névtér - Namespace A.NET framework (keretrendszer) sok - sok előre definiált osztályt (beépített osztályt) tartalmaz. Ezeket természetesen módunkban áll használni. Az osztályokat valamilyen logika szerint csoportosították és ezeket egy újabb csomagokba szervezték, és elnevezték őket névtereknek. A névterek tehát osztály gyűjteményekként is felfoghatóak. Az alapban rendelkezésre álló gyökér (tehát a legmagasabb szintű) névtereket beágyazott névtereknek hívjuk. Ilyen pl.: a System névtér. Természetesen egy névtér, tartalmazhat több névteret is. Így egy konkrét feladattípushoz tartozó névtérhez, már egy egész elérési útvonalat kell megadnunk. Pl.: Ha az SQL szerverrel kapcsolatos dolgokat akarunk használni, akkor a System.Data.SqlClient névtérre van szükségünk. Ebből a példából látszik, hogy egy adott feladat elvégzéséhez nincs szükségünk a teljes.net keretrendszerre, hanem csak bizonyos osztályokra/névterekre. Ezért valamilyen úton-módon meg kell adnunk a programunknak, hogy mely névterekre van szükségünk a feladat megoldásához. A szintaktika az alábbi: A névterek használta Basic esetén az Imports kulcsszóval történik. A névtereket akkor érdemes implementálni egy programba, ha többször is használjuk őket! 1 Leszármaztatásról bővebben: Ősosztályok témánál (6.-7. oldal).

4 Konstruktor(ok) Az osztályok maguk is objektumok, ezért megadható egy olyan metódus, hogy amikor létrehozunk egy ilyen típusú objektumpéldányt, már akkor végrehajtódjon valamilyen kód. Azt a metódust, amelyben ezt megírjuk, konstruktornak nevezzük. Arra is van lehetőségünk, hogy az objektum megszűnésekor hajtódjon végre automatikusan valamilyen kód, ezt a destruktor eljárásban kell elkészítenünk. A konstruktor létrehozása Basic-ben rendkívül egyszerű, az osztályon belül létre kell hozni egy New() függvényt. Imports System Public Class sajatosztaly Public Sub New() Console.WriteLine("Meghívódik a kontstruktor...") A konstruktorokat általában arra használjuk, hogy beállítsuk (inicializáljuk) az alapértékeit az osztályon belüli változóknak. Mint minden függvény ez is túlterhelhető (lentebb bővebb!) Példányosítás Mint ahogy fentebb is szó volt már erről, az osztályok újrahasznosíthatóak, illetve maguk is objektumok 2. Ezért egy adott osztályból létrehozhatunk úgynevezett példányokat, melyek egymástól teljesen függetlenek, de van élettartamuk. A példányok objektumok, melyek osztálynév típusúak lesznek, és ezeken az objektumokon keresztül tudjuk elérni az osztály eljárásait, tulajdonságait, stb -ket. Nézzük is egy példát! Először egészítsük ki az előző osztályunkat egy kiir() eljárással, az alábbi módon ( és közé írjuk be!): Public Sub kiir(byval szoveg As String) Console.WriteLine(szoveg) A főprogramunkban ezt a metódust hívjuk meg: Sub Main() Dim osztaly As New sajatosztaly() osztaly.kiir("teszt szöveg") Console.ReadLine() Így az alábbi két sor fog megjelenni a Console képernyőn: (a jel itt a sortörést szimbolizálja) Meghívódik a konstruktor Teszt szöveg 2 Ez csak az objektum orientált programozási (oop) nyelveknél igaz (például C#, VB, PHP5, stb.)! A többi nyelvnél az osztályok nem objektumok, de ettől függetlenül még példányosíthatóak.

5 Túlterhelés (overloading) A túlterhelés nagyon röviden azt jelenti, hogy van több olyan függvényünk/eljárásunk, melynek a nevük megegyezik, de különböző a paraméterezésük. Ilyenkor az adott metódust túlterheltnek nevezzük. A rendszer úgy dönti el, hogy melyik metódust kell meghívnia, hogy megnézi a hívott eljárás paraméterlistáját, és amelyik eljárás bemenő paramétereinek számossága megegyezik ezzel, akkor azt hívja meg. Túlterhelni egy metódust úgy tudunk, hogy a Sub kulcsszó elé odaírjuk az Overloads kulcsszót. Nézzünk egy példát: Public Overloads Sub kiir(byval szoveg As String, ByVal szoveg2 As String) Console.WriteLine(szoveg & szoveg2) Hívjuk meg a két különböző kiir() eljárást és nézzük meg a végeredményt: Sub Main() Dim osztaly1 As New sajatosztaly() osztaly1.kiir("egy paraméteres verzió") Dim osztaly2 As New sajatosztaly() osztaly2.kiir("első szövegrész, ","második szövegrész") Console.ReadLine() Kiírt sorok: Meghívódik a konstruktor Egy paraméteres verzió Meghívódik a konstruktor Első szövegrész, második szövegrész Két fontos dolgot kell látnunk! Az első az, hogy a kódunk így nem fordulni, mivel nem elég csak a kiir() eljárás kétparaméteres verziónak megadnunk, hogy ő egy túlterhelt változat, muszáj az eredeti kiir()-nél is odaírni az Overloads kulcsszót. A második dolog, amit észre kell vennünk, hogy mivel két példányt hoztunk létre az osztályból, ezért kétszer lesz kiírva a konstruktor üzenete. Tehát tényleg függetlenek egymástól a példányok. Adattagok, tulajdonságok (fields, properties) Az osztály, mivel egy objektum, ezért lehetnek belső állapotai, ezeket adattagok és tulajdonságok segítségével tudjuk a legegyszerűbben eltárolni. Az adattagok olyan változok, melyek az osztályon belülről bárhonnan érhetőek el (vagyis globálisak). E feltétel miatt, ezeket a váltózókat az osztály elején kell létrehozni! Általában a láthatóságot private-ra szokás állítani! Nézzünk egy példát: Public Class sajatosztaly Private x As String

6 A tulajdonságokat általában arra használjuk, hogy egy belső változót (általában field-eket) kívülről is le tudjunk kérdezni, illetve be tudjunk állítani. Nézzünk először a kódot, majd utána a magyarázatot. Property Nev()As String Get Return x End Get Set(ByVal value) x = value End Set End Property Egy tulajdonságnak kell lennie típusának és nevének! A property-n belül pedig két metódust kell megírnunk. A GET metódus arra szolgál, hogy meghatározza azt az értéket, amikor lekérjük az adott tulajdonságot, ehhez értelemszerűen szükségünk van a return kulcsszóra. A másik metódus a SET, ami akkor hívódik meg, amikor beállítjuk a tulajdonság értékét. Az új értéket a value változóban kapjuk, amelynek a típusa megegyezik a tulajdonság típusával. A SET metódus megírása elhagyható, ha csak olvasható tulajdonságot szeretnénk létrehozni, de ilyenkor még ki kell írnunk a Property kulcsszó mögé a ReadOnly szót is! A programból történő elérése a tulajdonságoknak teljesen hasonlóan történik, mint ha egy metódust akarnánk elérni. Először létre kell hoznunk egy példányt az osztályból és utána már el is tudjuk érni. Pl.: Dim osztaly As New sajatosztaly() osztaly.nev = "Vb Jegyzet" osztaly.kiir(osztaly.nev) Van arra is lehetőségünk Basic-ben, hogy bárhonnan elérhessük a sajatosztaly kiir eljárását, anélkül, hogy előtte létrehoznánk az adott osztályból egy példányt. Az ilyen metódusokat statikus metódusoknak hívjuk, és a Shared kulcsszó segítségével alakítjuk át őket ilyenre. Ha ezt beállítjuk az egyik kiir eljárásunknál, akkor ezentúl már, ilyen egyszerűen tudjuk elérni őt: sajatosztaly.kiir("ezt csak így lazán meghívjuk, példányosítás nélkül...") Ősosztály Amikor egy osztályt létrehozunk, akkor van arra is lehetőségünk, hogy egy már meglévő osztályból származtassuk. Ez az Inherits kulcsszóval történik. Az örököltetés lényege, hogy az ősosztályban megírt metódusokat, objektumokat felhasználhatjuk a saját osztályunkban és tetszés szerint, akár felül is definiálhatjuk, vagy túlterhelhetjük őket. Külön az osztályra, illetve külön a metódusokra megszabhatóak követelmények. Nézzük őket sorjában: Osztályra vonatkozó megkötések - MustInherit: az ilyen típusú osztályokat muszáj származtatni, belőlük csak úgy nem lehet példányt létrehozni, hanem csak valamely leszármaztatott osztályából! Az ilyen osztályokat szokás még absztrakt osztályoknak is hívni!

7 - NotInheritable: nem származtatható osztály, csak példányosítással használható! Ilyenkor természetesen nem kell külön megadni az eljárásoknál, hogy NotOverridable! - Partial: (részleges osztály), lényeg, hogy a teljes osztály definíciót több fájlban tároljuk, és csak fordítási időben merge-öljük össze. - Shadows: egy származtatott osztály elrejti az ősosztályát (belülről), de kívülről továbbra is elérhető marad az ős! Eljárásokra vonatkozóak - Overloads: túlterheli a metódust - Overrides: felüldefiniálja az eredetit - Overridable: felüldefiniálhatóvá teszi a metódust - NotOverridable: nem felüldefiniálható - MustOverride: kötelezően felüldefiniálandó - Shadows: két azonos nevű metódus esetén, belülről elrejti az ősosztálybeli metódust, így definiálja felül, de a származtatott osztályból továbbra is elérhető (MyBase)! - Shared: megosztott, vagyis példányosítás nélkül is elérhető Nézzünk egy egyszerű példát Public MustInherit Class ososztaly Overridable Sub writel(byval text As String) System.Console.WriteLine(text) Public Class szarmaztatott Inherits ososztaly Public Overrides Sub writel(byval text As String) MyBase.writel(text) Overloads Sub writel(byval text As String, ByVal text2 As String) System.Console.WriteLine(text & text2) Amint az a kódból is látszik, a MyBase objektumon keresztül el tudjuk érni az ősosztályunkat, a MyClass/me objektomon keretsztül pedig a saját osztályunkat. Interfész -Fogalom Az interfészeket néha szokás kivonatként vagy megegyezésként (contracts) is hívni. Ez azért van, mert az interface nem más az osztályok közös része. Példával érhetőbbé válik a dolog. Az olyan osztályok melyek implementálják ( használják ) például az IComparable interfészt, mind képesek arra, hogy megállapítsák: egy osztály két példánya ekvivalens-e. Ez annak köszönhető, hogy az IComparable interfész definiál egy CompareTo() metódust. A.NET Framework sok ilyen interfészt tartalmaz már alapból, de természetesen mi magunk is létrehozhatunk. A leggyakrabban használt előredefiniált interface-ek, pl.: IDisposable, IConvertible, IFormattable. Az interfészek használata Basic esetén az Implements kulcsszóval történik.

8 - Interface vs. Abstract class Első olvasatra az absztrakt ősosztály, illetve az interfész eléggé hasonló dolognak tűnik, mindketten arra valók, hogy adnak egy alapot, melyet ezután általában fölül definiálnunk. Az igazi nagy különbség a kettő között mégis az, hogy absztrakt ősosztályból csak egyet adhatunk meg, míg interfészből bármennyit egy adott osztálynak. 3 - Interface 1. példa Hozzunk létre az alábbi módon egy interfészt, majd implementáljuk: Public Interface IMyInterface Sub donothing() Sub write(byval x As String) End Interface Public Class impelented Implements IMyInterface Public Sub donothing() Implements IMyInterface.donothing Return Public Sub write(byval x As String) Implements IMyInterface.write Console.WriteLine(x) Az osztálynál, amikor implementáljuk az interface-t, akkor elég csak az IMyInterface-ig beírni a kódot, utána nyomjunk egy ENTER-t, a többit a VS kiegészíti (természetesen a metódusok még üresek lesznek! /C# esetén egy NotImplementedExpection-t fog dobni/). Ilyenkor muszáj az összes interfészbeli eljárást megírnunk, mivel nekünk kell kifejtenünk őket, tehát ebben a példában az interfész a C++-os header fájlra hasonlít egy kicsit. - Interface 2. példa Az előbbi példának, valljuk be őszintén, elsőre nem túl sok értelmét látjuk (a későbbiekben magunktól is rájövünk, hogy ez mégis jó dolog). Szerencsénkre az interface-eken belül definiálhatunk osztályokat is, melyben úgymond már ki is fejthetjük az eljárásainkat. Nézzünk is egy példát: Public Interface IMyInterface Sub donothing() Sub write(byval text As String) Class myinterfaceclass Shared Sub donothing() Return 3 További különbségek: Absztrakt ősosztálynál megszabható a láthatóság (public, private, stb.), interfész esetén az összes metódus, tulajdonság, esemény, stb., alapból public. Interfészben nem lehet adattagot létrehozni, ellenben típus definíciót (osztályt) igen! Interfésznek csak interfészt lehet megadni ősosztályként, absztrakt ősosztály viszont implementálhat interface-t is! Bővebben infó >> lásd google találatok

9 Shared Sub write(byval text As String) System.Console.WriteLine(text) End Interface Public Class implemented Inherits IMyInterface.myinterfaceclass Implements IMyInterface Public Sub donothing() Implements IMyInterface.donothing IMyInterface.myinterfaceclass.donothing() Me.write("Most az implemented osztály write eljárást hívjuk meg!") Public Sub write(byval text As String) Implements IMyInterface.write Console.WriteLine(text) MyBase.write("Most, pedig az IMyInterface.myinterfaceclass osztály write metódusát") Ennek a kódnak sincs túl sok értelme, de ebben szinte minden eddig tanult benne van. (egyszerre nem szokás használni az Inherits-et, illetve Implements-et!!!!) Ha meghívjuk például a donothing() metódusát az implemented osztálynak, akkor az alábbi két sort kapjuk: Most az implemented osztály write eljárást hívjuk meg! Most, pedig az IMyInterface.myinterfaceclass osztály write metódusát Delegálás (delegate) Ha a delegate-et le szeretnénk magyarra fordítani, akkor a legmegfelelőbb szó talán a metódusreferencia lenne. A delegate alapötlete az, hogy egy függvényt paraméterként átadhatunk egy másik metódusnak. Nézzünk meg a dolog, egy konkrét példán keresztül! Tegyük fel, hogy egy kisboltban dolgozunk, ahol sok termék van. A főnökünk megkeres minket (tudja rólunk, hogy profik vagyunk Visual Basic-ben), hogy szeretne egy olyan alkalmazást, amellyel többféle szempont szerint lehetne rendezni a termékeket. Azt is tegyük fel, hogy jól megfizet minket. Hogyan álljunk neki? Írjunk annyiféle buborékrendezést, ahányféle rendezés kell? (Azért kell többféle rendezés, mert string-eket (pl.: terméknév) másképp kell összehasonlítani, mint integereket (pl.: ár)). Hát ez bizony sok copy/paste-et igényelne. Ekkor támad egy zseniális 5letünk. Mi lenne, ha lenne egy alap rendezőmetódusunk, és több összehasonlító függvényünk. Nos ebben lesz nagy segítségünkre a delegate. Nézzük is meg, hogyan valósíthatjuk meg mindezt. Hozzunk egy Console alkalmazást, kapunk is egyből egy modult, majd írjuk be az alábbi kódsort a Main() elé: Public Delegate Function Compare(ByVal x As Object, ByVal y As Object) As Boolean

10 Ezzel a kódsorral létrehoztunk egy delegate-t, amit ezentúl, mint egy típus érhetünk el. Itt azt is megszabjuk, hogyan kell kinéznie az összehasonlító függvényeknek (2 bemenő object paraméter, egy bool visszaadott érték). Nézzük a rendező metódusunkat, majd utána a magyarázatot: Public Sub Sort(ByVal Datas() As Object, ByVal GreaterThan As Compare) Dim i As Integer Dim j As Integer Dim temp As Object For i = 0 To UBound(Datas) - 1 For j = i + 1 To UBound(Datas) If GreaterThan.Invoke(Datas(i), Datas(j)) Then temp = Datas(i) Datas(i) = Datas(j) Datas(j) = temp End If Next Next A Sort metódusunknak két paramétere van. Az első egy tömb, amelyet szeretnénk rendezni. A második pedig egy Compare típusú delegate, vagyis létre tudunk hozni a metódusreferenciánkból egy példányt!!! A metódusunk belül elkezdjük megvalósítani a buborékrendezést Minket igazándiból most csak az If sor érdekel. A GreaterThan egy Compare típusú példány. A Compare egy delegate. A delegate-knek van egy Invoke metódusa >> tehát van a GreaterThan is! Ez miért is jó? Ez azért királyság, mert amikor meghívjuk a Sort metódust, akkor átadjuk neki a rendezni kívánt tömböt és valamelyik összehasonlító függvényünkről egy referenciát. Azért csak referenciát adunk át, mivel különben meg kéne adnunk a paramétereket is. És pont erre való az Invoke tagfüggvény, hogy a delegate helyére behelyettesített függvénynek átadja a paramétereket. Tehát futtatáskor ennél a sornál meg fogja hívni a program valamelyik rendező függvényt a helyes paraméterezésével együtt. Most azt a részét valósítsuk meg a feladatunknak, hogy legyenek termék objektumaink. Ehhez létrehozunk egy osztályt, amelynek lesz két tulajdonsága (név, ár) + ctor. Íme: Public Class Product Public Sub New(ByVal name As String, ByVal price As Integer) _productname = name _price = price Private _price As Integer Public Property Price() As Integer Get Return _price End Get Set(ByVal value As Integer) _price = value End Set End Property Private _productname As String Public Property ProductName() As String Get Return _productname End Get

11 Set(ByVal value As String) _productname = value End Set End Property... Így, hogy már van egy osztályunk, amely reprezentálja a termékeket, ideje megírnunk az összehasonlító függvényeket (ezeket még az osztályon belül írjuk meg): Public Shared Function CompareByPrice(ByVal product1 As Object, ByVal product2 As Object) As Boolean Return CType(product1, Product).Price > CType(product2, Product).Price End Function Public Shared Function CompareByName(ByVal product1 As Object, ByVal product2 As Object) As Boolean Return CType(product1, Product).ProductName > CType(product2, Product).ProductName End Function Mindkét függvényünk tökéletesen megfelel a Compare delegate által leírt típusnak! Már csak annyi dolgunk van összesen, hogy létrehozzunk termékeket, meghívjuk a Sort függvényeket. Tehát nézzük meg, hogyan néz ki a Main() metódusunk (ez ismét a Module-n belül van!): Sub Main() Dim products(4) As Product products(0) = New Product("Kenyér", 200) products(1) = New Product("Zsömle", 10) products(2) = New Product("Tej", 150) products(3) = New Product("Szalámi", 300) products(4) = New Product("Kávé", 500) Sort(products, AddressOf Product.CompareByName) Console.WriteLine("Név szerint rendezve:") For Each myproduct As Product In products Console.WriteLine(myproduct.ProductName & " - " & myproduct.price) Next Console.WriteLine(" ") Sort(products, AddressOf Product.CompareByPrice) Console.WriteLine("Ár szerint rendezve:") For Each myproduct As Product In products Console.WriteLine(myproduct.ProductName & " - " & myproduct.price) Next Console.ReadLine() Összegezve az eddig leírtakat: Van egy általános rendező metódusunk. Van egy delegate-ünk. ami arra szolgál, hogy a rendező algoritmuson belül, meghívja a Sort metódusnak átadott összehasonlító függvényt (AddressOf függvényre referencia) úgy hogy közben odaadja neki a megfelelő paramétereket. Ezáltal egyetlen rendezőalgoritmus segítségével képesek vagyunk rendezni bármilyen adatokat, többféle szempont szerint is!!!!

12 A visszaadott kimenet valami hasonló lesz: Név szerint rendezve: Kenyér Kávé Szalámi Tej Zsömle - 10 Ár szerint rendezve: Zsömle - 10 Tej Kenyér Szalámi Kávé - 500

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: Excel objektumok Az excelben az osztályokat úgynevezett class modulokként hozzuk létre. Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni: View-ba

Részletesebben

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás 2015-2016

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás 2015-2016 Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS 2015-2016 Objektumorientált programozás OOP PHP-ben 2 A PHP az 5.0-as verziójától megvalósítja az OO eszközrendszerét OO eszközök:

Részletesebben

Programozási alapismeretek 4.

Programozási alapismeretek 4. Programozási alapismeretek 4. Obejktum-Orientált Programozás Kis Balázs Bevezetés I. Az OO programozási szemlélet, egy merőben más szemlélet, az összes előző szemlélettel (strukturális, moduláris, stb.)

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus

Részletesebben

Bevezetés a Python programozási nyelvbe

Bevezetés a Python programozási nyelvbe Bevezetés a Python programozási nyelvbe 7. Gyakorlat osztályok, objektumok (utolsó módosítás 2018. aug. 28.) Szathmáry László Debreceni Egyetem Informatikai Kar 2018-2019, 1. félév OO programozás Pythonban

Részletesebben

JAVA PROGRAMOZÁS 2.ELŐADÁS

JAVA PROGRAMOZÁS 2.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,

Részletesebben

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. Az osztály egy olyan típus leíró struktúra, amely tartalmaz adattagokat

Részletesebben

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén

Részletesebben

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:

Részletesebben

Java programozási nyelv 5. rész Osztályok III.

Java programozási nyelv 5. rész Osztályok III. Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

Szoftvertechnolo gia gyakorlat

Szoftvertechnolo gia gyakorlat Szoftvertechnolo gia gyakorlat Dr. Johanyák Zsolt Csaba http://johanyak.hu 1. Dependency Injection (függőség befecskendezés) tervezési minta A tervezési minta alapgondolata az, hogy egy konkrét feladatot

Részletesebben

OOP: Java 8.Gy: Abstract osztályok, interfészek

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november A C++ programozási nyelv Soós Sándor 1/12 Tartalomjegyzék Miért

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt

Részletesebben

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 5. gyakorlat 1 Objektumorientáltság Egységbezárás és információ elrejtése (absztrakt adattípus) Adatok és rajtuk végzett műveletek egységbezárása (osztályok írása, múlt hét) Öröklődés Polimorfizmus

Részletesebben

C#, OOP. Osztályok tervezése C#-ban

C#, OOP. Osztályok tervezése C#-ban C#, OOP Osztályok tervezése C#-ban OOP Létrehozás (creating) Megszüntetés (destroying) Túlterhelés (overlading) Felsorolás típus (enumerated types) 2 Hajó osztály Sailboat class using System; class Sailboat

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 8. előadás Öröklődés - megnyitunk egy osztályt egy másik előtt zárt egységeket szeretünk készíteni (láthatósági kérdés:

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 5. előadás Tömbök átméretezése public static void Resize( ref T[] array, int newsize ) Példa: int[] a=new int[20]; Array.Resize(ref a, 22); 2016. 10. 19.

Részletesebben

Már megismert fogalmak áttekintése

Már megismert fogalmak áttekintése Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak

Részletesebben

3. Osztályok II. Programozás II

3. Osztályok II. Programozás II 3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt

Részletesebben

ELTE SAP Excellence Center Oktatóanyag 1

ELTE SAP Excellence Center Oktatóanyag 1 Oktatóanyag 1 Oktatóanyag 2 Az oktatás folyamán használt példák a fent látható egyszerű modell implementációi. Oktatóanyag 3 A definíciós részben definiálja a fejlesztő az egyes attribútumokat, metódusokat,

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

Részletesebben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

Abstract osztályok és interface-ek. 7-dik gyakorlat

Abstract osztályok és interface-ek. 7-dik gyakorlat Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,

Részletesebben

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title; PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function

Részletesebben

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és Függvénysablonok Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 7. előadás AZ OOP alapelvei Egységbezárás(Encapsulation) Az adatokat es a hozzájuk tartozó eljárásokat egyetlen egységben (osztályban) kezeljük. Az osztály adatmezői

Részletesebben

Web-technológia PHP-vel

Web-technológia PHP-vel Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request

Részletesebben

Google C++ style guide

Google C++ style guide Április 3, 2013 Tartalomjegyzék Amiről szó lesz... Header állományok Hatókör Osztályok Elnevezések Előzmények Az útmutató célja A Google nyílt forrású projektjeinél túlnyomórészt C++: hatékony szolgáltatások,

Részletesebben

Interfészek. PPT 2007/2008 tavasz.

Interfészek. PPT 2007/2008 tavasz. Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése 2 Már megismert fogalmak áttekintése Objektumorientált

Részletesebben

Programozás C++ -ban 2007/7

Programozás C++ -ban 2007/7 Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum

Részletesebben

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot

Részletesebben

Bevezetés, a C++ osztályok. Pere László

Bevezetés, a C++ osztályok. Pere László Programozás módszertan II. p. Programozás módszertan II. Bevezetés, a C++ osztályok Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK

Részletesebben

Programozási nyelvek II.: JAVA

Programozási nyelvek II.: JAVA Programozási nyelvek II.: JAVA 13. gyakorlat 2017. december 11-15. 13. gyakorlat Programozási nyelvek II.: JAVA 1 / 32 Az 13. gyakorlat tematikája Generikus típusokés öröklődés Clone Comparator Névtelen

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 2. Előadás Dr. Bécsi Tamás Tömbök (Arrays) Definíció: típus[] név; (pld. int[] szamok; ) Inicializálás: int[] szamok = new int[4]; int[] szamok = 1,2,4,3,5}; int[] szamok

Részletesebben

C++ programozási nyelv Konstruktorok-destruktorok

C++ programozási nyelv Konstruktorok-destruktorok C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás: Java V. szint lyszintű ű tagok A final minősítő Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 05. Java V.: szintű tagok JAVA5 / 1 Példányváltozó Az eddig megismert adattagokból

Részletesebben

BME MOGI Gépészeti informatika 8.

BME MOGI Gépészeti informatika 8. BME MOGI Gépészeti informatika 8. 1. feladat Készítse beosztottak és vezetők munkahelyi adatait kezelő alkalmazást! A feladat megoldásához hozza létre a következő osztályokat! Beosztott osztály: adatmező

Részletesebben

Objektumorientált szoftverfejlesztés alapjai

Objektumorientált szoftverfejlesztés alapjai Objektumorientált szoftverfejlesztés alapjai Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben @Katona József Kővári Attila Lektorálta: Dr. Fauszt Tibor DOI:

Részletesebben

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

2011.11.29. JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése Tartalom Integrált fejlesztés Java platformon JUnit JUnit használata Tesztelési technikák Demo 2 A specifikáció alapján teszteljük a program egyes részeit, klasszikus V-modell szerint Minden olyan metódust,

Részletesebben

OOP. Alapelvek Elek Tibor

OOP. Alapelvek Elek Tibor OOP Alapelvek Elek Tibor OOP szemlélet Az OOP szemlélete szerint: a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Program készítés: Absztrakciós

Részletesebben

Programozás módszertan p.1/46

Programozás módszertan p.1/46 Programozás módszertan Öröklődés Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK MAGYAR TUDOMÁNYOS AKADÉMIA SZÁMÍTÁSTECHNIKAI ÉS

Részletesebben

Eseménykezelés - Lottó játék

Eseménykezelés - Lottó játék Eseménykezelés - Lottó játék Célok: Események, eseménykezelés hátterének, fogalmainak rövid áttekintése. Eseménykezelést megvalósító nem grafikus felületű példaprogram készítése. Objektum-, statikus- és

Részletesebben

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:

Részletesebben

Objektumorientált programozás IX. Osztályok, objektumok

Objektumorientált programozás IX. Osztályok, objektumok Objektumorientált programozás IX. Osztályok, objektumok 1 Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,

Részletesebben

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Modul III 6. előadás Objektumorientált programozás: öröklődés és polimorfizmus 2011.10.24. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor. Eseménykezelés előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Függvénymutatókkal Származtatással Interfészekkel Egyéb

Részletesebben

Objektum orientált kiterjesztés A+ programozási nyelvhez

Objektum orientált kiterjesztés A+ programozási nyelvhez Szegedi Tudományegyetem Informatikai Tanszékcsoport Objektum orientált kiterjesztés A+ programozási nyelvhez Diplomamunka terve Készítette: Bátori Csaba programtervező matematikus hallgató Témavezető:

Részletesebben

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 18. 2. El adás Komplex szám public class Complex { private float repart_; private float impart_; public Complex() { repart_ = 0; impart_ = 0; public Complex(float

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

Java programozási nyelv 4. rész Osztályok II.

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék

Részletesebben

Öröklés és Polimorfizmus

Öröklés és Polimorfizmus Öröklés és Polimorfizmus Egy létező osztályból egy (vagy több) újat készítünk A létező osztályt ősnek, az újakat utódnak nevezzük Az utódok öröklik az ős minden tagját Az utódok az öröklött tagokat újakkal

Részletesebben

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance

OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance Az objektum-orientált programozás (röviden OOP) a természetes gondolkodást, cselekvést közelítő programozási mód, amely a programozási nyelvek tervezésének természetes fejlődése következtében alakult ki.

Részletesebben

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18 C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi

Részletesebben

Programozás II gyakorlat. 8. Operátor túlterhelés

Programozás II gyakorlat. 8. Operátor túlterhelés Programozás II gyakorlat 8. Operátor túlterhelés Kezdő feladat Írjunk egy Vector osztályt, amely n db double értéket tárol. A konstruktor kapja meg az elemek számát. Írj egy set(int idx, double v) függvényt,

Részletesebben

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816 2 Ismétlés Ismétlés 3 Fájl/Adatbázis 3 4 Szerver 2 CGI

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Láthatósági szintek Névterek és hatókörök Osztály szintő tagok Beágyazott osztályok

Részletesebben

Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben

Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben Eötvös Loránd Tudományegyetem Informatikai Kar Objektumelvű alkalmazások fejlesztése 6. gyakorlat, polimorfizmus 2011.10.27. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Kódismétlődés

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 3. rész Tulajdonságok Indexelők Kivételkezelés Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát

Részletesebben

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag C# osztálydeníció Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem.net C# technológiák tananyag objektum orientált programozás tananyag Tartalom 1 Bevezetés 2 Osztály létrehozása, deníció

Részletesebben

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva

Smalltalk 3. Osztályok létrehozása. Készítette: Szabó Éva Smalltalk 3. Osztályok létrehozása Készítette: Szabó Éva Metaosztály fogalma Mint korában említettük, a Smalltalkban mindent objektumnak tekintünk. Még az osztályok is objektumok. De ha az osztály objektum,

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)

Részletesebben

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg. KIINDULÁS Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg. Programozás III Az egyszerűség kedvéért mindegyiket a nevük alapján regisztráljuk,

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java 2. gyakorlat Függvények Általános prototípus Módosítószavak Láthatóság: public, protected, private. Ha nem definiált, akkor úgynevezett package-private láthatóság. Lehet abstract

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

Részletesebben

III. OOP (objektumok, osztályok)

III. OOP (objektumok, osztályok) III. OOP (objektumok, osztályok) 1. Természetes emberi gondolkozás Az Objektumorientált paradigma alapelvei nagyon hasonlítanak az emberi gondolkozásra. Érdemes ezért elsőként az emberi gondolkozás elveit

Részletesebben

OOP: Java 8.Gy: Gyakorlás

OOP: Java 8.Gy: Gyakorlás OOP: Java 8.Gy: Gyakorlás 43/1 B ITv: MAN 2019.04.10 43/2 Egy régebbi beszámoló anyaga 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét

Részletesebben

Globális operátor overloading

Globális operátor overloading Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 33

Bánsághi Anna 2014 Bánsághi Anna 1 of 33 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Sztringek Osztályok alapjai Sztringek Szöveges adatok kezelése Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális

Részletesebben

RESIDENT EVIL CODENAME: NIK

RESIDENT EVIL CODENAME: NIK RESIDENT EVIL CODENAME: NIK Gyakorló zárthelyi dolgozat Figyelem! A feladat mennyiségre több anyagot tartalmaz, mint a zárthelyi dolgozat, amely az órán várható. Ennek oka, hogy több gyakorlásra legyen

Részletesebben

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum Bevezetés a programozásba 2 1. Előadás: Tagfüggvények, osztály, objektum Ismétlés int main() { string s; s; s= bla ; cout

Részletesebben

Objektumok inicializálása

Objektumok inicializálása Objektumok inicializálása Miskolci Egyetem Általános Informatikai Tanszék Objektumok inicializálása CPP4 / 1 Tartalom public adattagok inicializálása felsorolással konstruktor objektum tömbök osztály típusú

Részletesebben

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1 Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt

Részletesebben

PHP5 Új generáció (2. rész)

PHP5 Új generáció (2. rész) PHP5 Új generáció (2. rész)...avagy hogyan használjuk okosan az osztályokat és objektumokat PHP 5-ben. Cikksorozatom elõzõ részében képet kaphattunk arról, hogy valójában mik is azok az objektumok, milyen

Részletesebben

OOP és UML Áttekintés

OOP és UML Áttekintés OOP és UML Áttekintés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) OOP és UML Áttekintés 2013 1 / 32 Tartalom jegyzék 1 OOP Osztály Öröklődés Interfész, Absztrakt Osztály Kivétel kezelés

Részletesebben

Programozás módszertan

Programozás módszertan Programozás módszertan p. Programozás módszertan Operátorok túlterhelése a C++ nyelvben Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA TANSZÉK Bevezetés Programozás

Részletesebben

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás

Részletesebben

Programozás. Objektum Orientált Programozás (OOP) Alapfogalmak. Fodor Attila

Programozás. Objektum Orientált Programozás (OOP) Alapfogalmak. Fodor Attila Programozás Objektum Orientált Programozás (OOP) Alapfogalmak Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. február 18.

Részletesebben

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni? A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály

Részletesebben

Smart Pointer koncepciója

Smart Pointer koncepciója Smart Pointer koncepciója ( Egyszerű Smart Pointer implementálása C++ nyelven ) Bevezetés Mik a smart pointer-ek 1? A válasz egyszerű; a smart pointer-ek olyan mutatók amik okosak. Mit is jelent ez pontosan?

Részletesebben

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék Speciális adattagok és tagfüek Miskolci Egyetem Általános Informatikai Tanszék CPP7 / 1 Statikus adattagok Bármely adattag lehet static tárolási osztályú A statikus adattag az osztály valamennyi objektuma

Részletesebben

Elemi Alkalmazások Fejlesztése II.

Elemi Alkalmazások Fejlesztése II. Elemi Alkalmazások Fejlesztése II. Osztályok közötti kapcsolatok öröklődés asszociáció aggregáció kompozíció 1. Feladat Készítsünk programot, amellyel testek térfogatát határozhatjuk meg, illetve megadhatjuk

Részletesebben

TestLine - OO Programozás alapjai Minta feladatsor

TestLine - OO Programozás alapjai Minta feladatsor 2016.09.20. 18:46:36 Oktató: n/a Kérdések száma: 16 kérdés Kitöltési idő: 29:45 Szélsőséges pontok: -196 pont +672 pont z Óbudai gyetem Programozás III című tárgyának előkövetelményeként létező Programozás

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked

Részletesebben

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben

OOP: Java 7.Gy: Öröklődés, referenciák

OOP: Java 7.Gy: Öröklődés, referenciák OOP: Java 7.Gy: Öröklődés, referenciák 37/1 B ITv: MAN 2019.03.26 Öröklődés Egységbezárás (az egyik OOP alapelv) : az adatokat és rajtuk végzett műveleteket egy egységként kezeljük, ez az egység az osztály.

Részletesebben

Programozás II. 4. Dr. Iványi Péter

Programozás II. 4. Dr. Iványi Péter Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include

Részletesebben

Virtuális függvények (late binding)

Virtuális függvények (late binding) Virtuális függvények (late binding) Miskolci Egyetem Általános Informatikai Tanszék Virtuális függvények CPP5 / 1 Azonos nevű függvények megkülönböztetése paraméterszignatúra (függvény overloading) - egy

Részletesebben

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon 1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (

Részletesebben