Alkalmazott Modul III 1. gyakorlat. Objektumorientált keretrendszerek, C# alapismeretek. Objektumorientált keretrendszerek Történelem
|
|
- Gergely Illés
- 6 évvel ezelőtt
- Látták:
Átírás
1 Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Modul III 1. gyakorlat Objektumorientált keretrendszerek, Giachetta Roberto Történelem 1967-ben a Simula 67 támogatta először az objektumorientált programozást 1980-ban a Smalltalk nyelv volt az első, amely teljesen objektumorientáltan épült fel, és megadta az összes őt követő nyelv alaptulajdonságait, úgymint: minden implementált elem (változók, konstansok, metódusok) egy objektum, és egyben egy osztály példánya, az osztályok egy teljes származtatási hierarchiában vannak a memóriakezeléshez szemétgyűjtőt használ dinamikus programozás támogatása teljesen hordozható kódot biztosít virtuális gépen történő futtatás segítségével ELTE TTK, Alkalmazott modul III 1:2 A virtuális gép A hordozhatóság akadálya, hogy a fordítással keletkezett alacsonyszintű programkód gépfüggő, ezért a Smalltalk programokat egy gépfüggetlen köztes nyelvre (Intermediate Language) fordították A köztes nyelvű program egy értelmező szoftver segítségével futtatható, amely futás közben alakítja gépi kóddá a programkódot, ezt az értelmezőt nevezzük virtuális gépnek (Virtual Machine) Ezt a félig fordított, félig értelmezett megoldást nevezzük futásidejű fordításnak, vagy röpfordításnak (Just In Time Compilation) a futtatáskor optimalizációk történnek, így az értelmezést követően gyorsabb lehet a futás, mint teljes fordítás esetén ELTE TTK, Alkalmazott modul III 1:3 A szoftver keretrendszer Mivel a fordítás egy része, és az összeszerkesztés futási időben történik, ezért nem kötelező minden programkomponenst beágyazni a programba, a hivatkozások feloldása történhet futtatáskor is ezáltal csökkenthető a program mérete és a betöltés ideje a kiemelt komponenseknek jelen kell lenniük a gépen célszerű a beépített könyvtárak kiemelése Szoftver keretrendszernek nevezzük a kiemelt programkönyvtár és a virtuális gép együttesét tartalmazza az API gépfüggetlen, absztrakt lefedését felügyeli a programok futásának folyamát biztosítja a memóriakezelést, szemétgyűjtést ELTE TTK, Alkalmazott modul III 1:4 Futásidejű fordítás Programnyelvi kód Fordítóprogram Köztes nyelvű kód Keretrendszer Virtuális gép Nyelvi könyvtár Gépi kód Teljes származtatási hierarchia Teljes származtatási hierarchiában van egy egyetemes ős osztály, minden más osztály ennek leszármazottja (akkor is, ha nincs megjelölve ősként) az ős definiálja az alapértelmezett viselkedését minden objektumnak (pl. szöveggé alakítás, másolás, ) minden beépített osztály egy származtatási hierarchia mentén van implementálva, és ezek között absztrakt osztályok is találhatóak ezen láncok mentén specializálódnak, illetve kiegészülnek az osztályok viselkedései a hierarchia mentén találhatóak megkötések is a származtathatóságra és a felüldefiniálhatóságra ELTE TTK, Alkalmazott modul III 1:5 PPKE ITK, Programozás.NET környezetben 1:6 1
2 Teljes származtatási hierarchia class Hierarchy Object Label RadioButton IButtonControl Button MarshalByRefObject IComponent IDisposable Component ButtonBase IContainerControl ContainerControl IDropTarget ISynchronizeInvoke IWin32Window IBindableComponent IComponent IDisposable Control IComponent IDisposable ScrollableControl PPKE ITK, Programozás.NET környezetben 1:7 Form Panel Memóriakezelés Az objektumorientált nyelvekben célszerű referenciákon, illetve mutatókon keresztül hivatkozni az objektumokra, hatékonysági és élettartam szabályozási okok folytán mutatók esetén a létrehozást és törlést manuálisan kell megírni, ám a törlés sokszor elmarad, ezért a memóriában maradnak a felesleges, nem hivatkozott objektumok (a szemét), ezért célszerű ezt automatikusan elvégezni A virtuális gép feladata, hogy felügyelje a program által elfoglalt memóriaterületet, és a benne lévő memóriaszemetet eltávolítsa, ezt nevezzük szemétgyűjtésnek (Garbage Collection) ciklikusan ellenőrzi a memóriát és a hivatkozásokat, és kiüríti a nem hivatkozott memóriaterületeket PPKE ITK, Programozás.NET környezetben 1:8 Metaosztályok és dinamikus programozás Mivel minden objektum, maguk az osztályok is objektumok, és az ő viselkedési mintájukat is definiálni kell, erre a célra szolgálnak a metaosztályok közös felületet biztosít osztálytulajdonságok és azok részleteinek lekérdezésére, metódusok futtatására, módosítására és példányosításra az objektumok és osztályok lehetőséget adnak a metaosztály lekérdezésére és az osztályhoz tartozó metaobjektum létrehozására a metaosztály is egy objektum, a típusa szintén metaosztály A metaobjektumokon át bármely osztályt módosíthatunk futás közben, ezáltal dinamikusan programozhatóvá válik a rendszer Metaosztályok és dinamikus programozás class MetaClasses ObjectDescriptor :Type «represents» Object + GetType() : Type «occurrence» SimpleObject :Object «occurrence» Type MemberInfo _Type IReflect + GetConstructor(Type[]) : ConstructorInfo + GetMember(string) : MemberInfo[] + GetMethod(string) : MethodInfo + GetNestedType(string) : Type + GetProperty(string) : PropertyInfo + GetType() : Type + InvokeMember(string, object, object[]) : object «property» + BaseType() : Type + IsAbstract() : bool + IsArray() : bool + IsInterface() : bool «represents» «occurrence» TypeDescriptor :Type PPKE ITK, Programozás.NET környezetben 1:9 PPKE ITK, Programozás.NET környezetben 1:10 A Java 1991-ben indult el a Java fejlesztése a Sun Microsystems-nél, amelynek célja egy objektumorientált, általános célú, hordozható kódú, sokplatformos programozási nyelv megalkotása volt könnyű programozhatóságot, ugyanakkor lassabb programfuttatást eredményezett, a programok a Java virtuális gépen (JVM) futottak pár év alatt, különösen a mobil és webes alkalmazásoknak köszönhetően nagy népszerűségre tett szert a Microsoft saját virtuális gépet, és nyelvi könyvtárat fejlesztett ki (Virtual J++), amely gyorsabb futtatást tett lehetővé A.NET Framework 1998-tól a Microsoft új célja a futásidejű fordítás kiterjesztése a létező Microsoft nyelvekre (Visual C++, Visual Basic), ezáltal egy közös virtuális gépen futhatnak a programok egységes köztes nyelv vezethető be, így a nyelvek tetszőleges mértékben kombinálhatóak egymással egységes programkönyvtárak használhatóak 2001-re készült el a.net Framework, és a dedikáltan ráépülő nyelv, a C# azóta integrált része a Windows rendszereknek hozzáférést biztosít az összes Microsoft technológiához (COM, ODBC, DirectX) PPKE ITK, Programozás.NET környezetben 1:11 PPKE ITK, Programozás.NET környezetben 1:12 2
3 A.NET Framework Egységes virtuális gép: Common Language Runtime (CLR) Egységes köztes nyelv: Common Intermediate Language (CIL) Egységes típusrendszer: Common Type System (CTS) Teljeskörű programkönyvtár Base Class Library (BCL): gyűjtemények, I/O kezelés, adatkezelés, hálózat, párhuzamosítás, XML, Framework Class Library (FCL): WinForms, ASP.NET, LINQ, WPF, WCF Biztosítja a programok védettségét és hordozhatóságát memóriakezelés felügyelete: Managed Code köztes kód védelme: Code Access Security (CAS) PPKE ITK, Programozás.NET környezetben 1:13 A.NET Framework története 1.1 (2003): megnövelt ASP.NET funkcionalitás, biztonság. Compact Framework megjelenése 2.0 (2005): eléri a Java funkcionalitását gyorsabb programfuttatás, 64 bites támogatás sablonok, parciális osztályok, névtelen metódusok támogatása, új adatkezelés (ADO.NET) 3.0 (2007): új technológiák a kommunikációra és megjelenítésre (WCF, WPF, WF, CardSpace) 3.5 (2008): funkcionális programozás, nyelvbe ágyazott lekérdezések (LINQ), AJAX támogatás 4.0 (2010): párhuzamosítás automatizálása (PLINQ, TPL), szerződés alapú programozás (DbC) PPKE ITK, Programozás.NET környezetben 1:14 A.NET Framework nyelvei Összesen 44 nyelv biztosít támogatást a.net keretrendszer felé, a hivatalosan támogatott nyelvek: C#: a Visual J++ utódnyelve, amely eltávolodik a Java szintaxisától, több ponton visszatér a C++-hoz J#: a Visual J++ utódnyelve, megmarad a teljes Java szintaxisnál, a.net környezetre építve (ma már nem használatos) Visual Basic.NET: a Visual Basic továbbfejlesztése C++/CLI (C++.NET): C++ szintaxis kiegészítve a.net könyvtárakra memóriafelügyelettel F#: funkcionális programozási nyelv JScript.NET: JavaScript alapú szkriptnyelv PPKE ITK, Programozás.NET környezetben 1:15 Kritika a.net-tel szemben A futásidejű fordítás miatt szükséges a keretrendszer megléte lassúbb programindítás (nagyságrendi elmaradás a fordított programokhoz képest, azonban jelentős előny a Java-val szemben) a köztes kód teljes mértékben visszafejthető bármely felsőbb szintű nyelvbe (ez valamelyest kivédhető kódzavaró eszközökkel, de nem teljesen) A memóriafelügyelet miatt megnövelt erőforrásigény (mutatók folyamatos ellenőrzése) késleltetés a szemétgyűjtő futásakor (valós idejű alkalmazások implementálása lehetetlen) PPKE ITK, Programozás.NET környezetben 1:16 A nyelv lehetőségei A C# tisztán objektumorientált programozási nyelv, amely teljes mértékben a.net Frameworkre támaszkodik hordozható kód, memóriafelügyelet szintaktikailag nagyrészt C++, megvalósításában Java egyszerűsített szerkezetet biztosít, nem választható el a deklaráció a definíciótól strukturált felépülés névterekkel lehetőséget ad komponens-alapú, elosztott, lokalizált, beágyazott fejlesztésre 2.0-tól sablonok használata, elosztott típusok 3.0-tól támogatja a funkcionális paradigmát a forrásfájl kiterjesztése:.cs PPKE ITK, Programozás.NET környezetben 1:17 Azonosítók és literálok Kódolás: Unicode 3.0 azonosítókat a szabványnak megfelelően lehet írni a kulcsszavak karakterrel használhatóak azonosítóként Számábrázolás: egész számok alapértelmezésben 10-es számrendszerben ábrázolódnak, de lehet 8-as (0 előtag, pl. 0173), illetve 16- os számrendszert használni (0x előtag, pl. 0x3de2) hosszú (long) számokat L utótaggal (pl. 132L), előjel nélküli (unsigned) számokat U utótaggal jelölünk (pl. 12U) valós számok alapértelmezetten dupla pontosságúak, egyszeres pontosságot F utótaggal jelölünk (pl. 13.1F) valós számok megadhatóak kitevős formában is ELTE TTK, Alkalmazott modul III 1:18 3
4 A Hello, World! program namespace Hello // névtér class HelloWorld // osztály static void Main() // statikus főprogram System.Console.WriteLine("Hello, World!"); // kiírás konzol képernyőre ELTE TTK, Alkalmazott modul III 1:19 Névterek A névterek biztosítják a rendszer strukturáltságát, lényegében csomagoknak felelnek meg minden osztálynak névtérben kell elhelyezkednie, nincs globális, névtelen névtér, így a program szerkezete: namespace <nevek> <osztályok> hierarchikusan egymásba ágyazhatóak, és ezt a névtérben pont elválasztóval jelöljük, pl.: namespace Outer... namespace Outer.FirstInner... // a fenti névtéren belüli névtér namespace Outer.FirstInner.DeepInner... // a belső névtéren belüli névtér namespace Outer.SecondInner... ELTE TTK, Alkalmazott modul III 1:20 Névterek a.net könyvtárai is hierarchikus névterekben találhatóak közvetlenül csak az aktuális névtérbeli osztályok láthatóak, de más névterekre is hivatkozhatunk Névtereket használni a using <névtér> utasítással lehet, ekkor a névtér összes típusa elérhető lesz pl.: using System; using System.Collections.Generic; az utasítás a teljes fájlra vonatkozik, így általában a névtérhasználattal kezdjük a kódfájlt a típusnév előtt is megadhatjuk a használandó névteret (így nem kell using), pl.: System.Collections.Stack l; típusnév ütközés esetén mindenképpen ki kell írnunk a teljes elérési útvonalat ELTE TTK, Alkalmazott modul III 1:21 Típusosság A nyelv három típuskategóriát különböztet meg: érték: érték szerint kezelendő típusok, mindig másolódnak a memóriában, és a blokk végén törlődnek referencia: biztonságos mutatókon keresztül kezelt típusok, amelyeknél csak a memóriacím másolódik, a szemétgyűjtő felügyeli és törli őket, amint elvesztik az összes referenciát mutató: nem biztonságos mutatatók, amelyek csak felügyeletmentes (unsafe) kódrészben használhatóak Minden típus objektumorientáltan van megvalósítva Minden típus a teljes származtatási hierarchiának megfelelően egy.net Framework-beli osztály, vagy annak leszármazottja, a keretrendszertől független típusok nem hozhatóak létre ELTE TTK, Alkalmazott modul III 1:22 Osztályok felépítése Az osztály négy féle elemből építhető fel: mező (field): attribútum érték, amely lehet változó, konstans, vagy olvasható (lehet objektum- és osztályszintű) metódus (method): osztály tagfüggvénye, amely eléri az osztály minden elemét (amennyiben nem osztályszintű) tulajdonság (property): attribútumként funkcionáló érték, amely igazából metódusok segítségével van megvalósítva, lényegében a beállító és lekérdező művelet absztrakciója esemény (event): eseményvezérelt programoknál kiváltható tulajdonság, amelyhez eseménykezelő metódus rendelhető, mely reagál rá A típusok tetszőlegesen egymásba ágyazhatóak ELTE TTK, Alkalmazott modul III 1:23 Primitív típusok Primitív típusnak nevezzük a nyelv alaptípusait, amelyek a központi könyvtárban (a System névtérben) vannak megvalósítva a C#-ban valójában nem primitívek, csak egyszerű formában használható osztályok, ezért intelligensek Érték szerinti primitívek: logikai: bool egész számok (előjeles és előjel nélküli): sbyte, byte, short, ushort, int, uint, long, ulong lebegőpontos számok: float, double fixpontos szám: decimal (1.0* *10 28 ) karakter: char ELTE TTK, Alkalmazott modul III 1:24 4
5 Primitív típusok Referencia szerinti primitívek: objektum (ősosztály): object szöveg: string Minden rövidített C# típusnév ekvivalens egy.net osztálynévvel, amely a System névtérben található, pl.: int == System.Int32, object == System.Object A rövidített névvel is elérhetőek az intelligens osztály tulajdonságok osztályszinten, pl.: int.maxvalue // a maximális int érték objektumszinten, pl.: int a = 1; a.tostring(); // kiírás szövegesen ELTE TTK, Alkalmazott modul III 1:25 Típuskonverziók Szigorúan típusos a nyelv minden értéknek fordítási időben ismert a típusa az implicit (automatikus) típuskonverziók korlátozva vannak a nagyobb típushalmazba pl.: byte short, ushort, int,, double int long, float, decimal, double float double nem lehet automatikus konverzióra támaszkodni olyan típusok között, ahol nem garantált, hogy nem történik értékvesztés, és ez fordítási időben kiderül pl.: float int ekkor explicit konverziót kell alkalmaznunk ELTE TTK, Alkalmazott modul III 1:26 Típuskonverziók az explicit típuskonverzió fordítási időben felügyelt, és kompatibilitást ellenőriz, pl.: int x; double y = 2, string z; x = (int)y; // engedélyezett z = (string)y; // hiba, mert int és string nem kompatibilisek tetszőleges primitív típuskonverzióra a Convert osztály statikus metódusai használhatóak, illetve szövegre történő konverzió több módon is elvégezhető: int x; double y = 2, string z; x = Convert.ToInt32(y); z = Convert.ToString(y); // z = y.tostring(); x = Int32.Parse(z); // x = Convert.toInt32(z); Felsorolási típus A felsorolási típus (enum) értékek egymásutánja, ahol az értékek egész számoknak felelődnek meg (automatikusan 0-tól sorszámozva, de ez felüldefiniálható) pl.: enum Munkanap Hétfő, Szerda = 2, Csütörtök a hivatkozás a típusnéven át történik, pl.: Munkanap mn = Munkanap.Hétfő egy változó több értéket is eltárolhat, így több értékre is igaz lehet, pl.: Munkanap mn = Munkanap.Hétfő Munkanap.Szerda többágú elágazásban használható feltételként ez is egy osztály a System névtérben: public abstract class Enum : ValueType, ELTE TTK, Alkalmazott modul III 1:27 ELTE TTK, Alkalmazott modul III 1:28 Elemi osztály Az elemi osztály (struct) egy egyszerűsített osztály, amely: mindig érték szerint kezelődik, a példány automatikusan megsemmisül a blokk végén nem szerepelhet öröklődésben (sem ősként, sem leszármazottként), de implementálhat tetszőleges számú interfészt automatikus őse a System.ValueType (ami leszármazottja a System.Object-nek, ugyanakkor definiálja az érték szerinti kezelést) [<láthatóság>] [<módosítók>] struct <név> [: <interfészek>] <definíciók> ELTE TTK, Alkalmazott modul III 1:29 Elemi osztály További megkötések: nem lehet alapértelmezett konstruktora, és destruktora (az érték szerinti kezelés miatt) nem lehet az elemeit inicializálni (minden elem az alapértelmezett értéket kapja meg) nem alkalmazhatóak az abstract, virtual, sealed, protected kulcsszavak Általában egyszerű, rekordszerű szerkezethez használjuk, amelyek érték szerinti kezelése, másolása nem rontja a program teljesítményét ugyanakkor tetszőleges mértékig növelhetjük a tulajdonságaikat ELTE TTK, Alkalmazott modul III 1:30 5
6 Elemi osztály pl.: namespace My.Numbers struct Racionalis // racionális szám osztálya public int Szamlalo; // adattagok public int Nevezo; public Racionalis(int sz, int n) // paraméteres konstruktor Szamlalo = sz; Nevezo = n; if (Nevezo == 0) Nevezo = 1; Referencia osztály A referencia osztály (class) a teljes értékű osztály, amely származtatásban is szerepelhet [<láthatóság>] [<módosítók>] class <név> [: <ős>, <interfészek>] <definíciók> csak egy őse lehet, de tetszőleges számú interfészt valósíthat meg mezőit lehet közvetlenül inicializálni, vagy nulla paraméteres konstruktor segítségével az öröklődés miatt lehet absztrakt osztály, és szerepelhetnek benne absztrakt és virtuális elemek ELTE TTK, Alkalmazott modul III 1:31 ELTE TTK, Alkalmazott modul III 1:32 Referencia osztály Cím szerint, felügyelt mutatók segítségével kezelt típusok, ezért külön példányosítani kell a new utasítással, és megfelelő konstruktor meghívásával a felügyelt mutató alapértelmezetten null értéket vesz fel, és nem fordulhat elő, hogy rossz címre mutat, a referenciát levenni az objektumról szintén a null értékadással lehet másoláskor csak a memóriacíme másolódik, hacsak nem manuálisan másolunk (Clone), ehhez meg kell valósítania az ICloneable interfészt megsemmisítését a szemétgyűjtő végzi, de (az IDisposable interfészt megvalósító osztályoknál) lehetőségünk van előzetes törlés elvégzésére (Dispose), ekkor az objektum java része megsemmisül ELTE TTK, Alkalmazott modul III 1:33 Referencia osztály namespace My.Numbers class Racionalis // most már referencia osztály public int Szamlalo; // adattagok public int Nevezo; public Racionalis(int sz, int n) // paraméteres konstruktor Szamlalo = sz; Nevezo = n; if (Nevezo == 0) Nevezo = 1; ELTE TTK, Alkalmazott modul III 1:34 Interfész Az interfész (interface) deklarációk halmaza, egy osztályfelület, amely nem példányosítható, csak arra szolgál, hogy osztályok közös tulajdonságait összefogja [<láthatóság>] interface <név> <deklarációk> a többszörös öröklődés kiküszöbölésére szükséges nem tartalmaz megvalósítást, azaz lényegében minden eleme absztrakt (de nem kell kiírni a kulcsszót) tartalmazhat metódusokat és tulajdonságokat minden eleme publikus, ezért nem adunk meg láthatóságot a névkonvenció szerint az interfész nevét I betűvel kezdjük Interfész namespace My.Numbers interface IDoubleCompatible // valós típussal kompatibilis felület void FromDouble(double d); // csupán a metódus deklarációja szerepel, // a törzse nem, se láthatósága double ToDouble(); ELTE TTK, Alkalmazott modul III 1:35 ELTE TTK, Alkalmazott modul III 1:36 6
7 Interfész namespace My.Numbers public class Complex : IDoubleCompatible public double R, I; // publikus adattagok public Complex(double r, double i) R = r; I = i; // publikus konstruktor // interfész megvalósítása: public void FromDouble (double d) R = d; I = 0; public double ToDouble() return R; Tömbök A tömbök is objektumok, a System.Array, vagy leszármazottjának példányai, emiatt referenciaként tárolt és intelligens (pl. a méretét a Length tulajdonsággal érhetünk el) Deklarációra több lehetőség is adott: <típus>[] szokványos egydimenziós tömb <típus>[][] szokványos egymásba ágyazott tömb <típus>[,] kétdimenziós tömb Definícióhoz létre kell hozni a tömböt a méret megadásával, vagy az értékek megadásával, pl.: int[] t = new int[4]; // minden eleme 0 lesz int[] t = new int[] 1, 2, 3, 4; // t.length == 4 int[,,] m = new int[10,5,2]; // 3 dimenziós ELTE TTK, Alkalmazott modul III 1:37 ELTE TTK, Alkalmazott modul III 1:38 Vezérlési szerkezetek A szekvenciapont a ; Ugrás: goto <címke>; Elágazások: kétágú: if(<feltétel>) <mag>; else <mag>; a feltétel logikai típusú a csellengő else mindig az utolsó elágazáshoz tartozik rövidítve (használható értékadáshoz is): <feltétel>? <mag> : <mag>; ELTE TTK, Alkalmazott modul III 1:39 Vezérlési szerkezetek többágú: switch(<változó>) case <konstans> : <mag>; break; // kilépés az elágazásból case <konstans> : <mag>; goto case <konstans> // ugrás címkére // default: // alapértelmezett ág <mag>; break; alkalmazható egész és szöveg változókra alapértelmezett (default) ág nem kötelező a lezárás (break), vagy továbbadás (goto) kötelező ELTE TTK, Alkalmazott modul III 1:40 Vezérlési szerkezetek Ciklusok: számláló: for (<inicializálás>; <feltétel>; <léptetés>) <mag>; előtesztelő: while (<feltétel>) <mag>; utántesztelő: do <mag>; while (<feltétel>); felsoroló: foreach(<deklaráció> in <kifejezés>) <mag>; egy gyűjtemény értékein tud végighaladni kifejezés értékének kell GetEnumerator() metódus ciklusból kilépés (break), feltétel kiértékeléshez ugrás (continue) lehetséges Operátorok Az operátorok olyan függvények, amelyek speciális meghívással rendelkeznek, vezérlőkaraktereken, vagy kulcsszavakon keresztül a meghívás rögzített formában történik (prefix, postfix vagy infix jelölés mellett) az operátorok precedenciával rendelkeznek, amely halmozás esetén megszabja a hívási sorrendet az operandusok száma minden esetben rögzített, vannak egy-, két-, illetve háromoperandusú műveletek, és ez rögzített minden operátorhoz (a + és operátortoknak van egy-, illetve kétoperandusú változata is) A beépített típusok előre definiált operátorokkal rendelkeznek ELTE TTK, Alkalmazott modul III 1:41 ELTE TTK, Alkalmazott modul III 1:42 7
8 Operátorok Aritmetikai: pozitivitás (+a), negáció (-a) értéknövelés (a++, ++a), értékcsökkentés (a--, --a) összeadás (a + b), kivonás (a - b), szorzás (a * b), osztás (a / b), maradékképzés (a % b) túlcsordulás ellenőrzés (checked, unchecked) Értékadás: egyszerű (a = b) összetett (a += b, a -= b, a *= b, a /= b, a %= b, a <<= b, a >> b, a &= b, a = b, a ^= b) feltételes (a? b : c) Operátorok Függvényhívás (a()) Logikai: érték összehasonlítás (a < b, a > b, a <= b, a >= b, a == b, a!= b) tagadás (!a), és (a && b), vagy (a b) Memória: memóriajelenlét ellenőrzés (??) referencia (&a), dereferencia (*a) taghivatkozás (a.b), mutató általi taghivatkozás (a->b) méretlekérdezés (sizeof a, sizeof(<típus>)) memóriaterület lefoglalás (new <típus>) ELTE TTK, Alkalmazott modul III 1:43 ELTE TTK, Alkalmazott modul III 1:44 Operátorok Indexelés (a[b]) Típuskezelés: típusazonosítás (is), típuskezelés (as) explicit típuskonverzió ((<típus>) a) típusazonosítás (typeof a, typeof(<típus>)) Bitenkénti: eltolás balra (a << b), eltolás jobbra (a >> b) komplementer képzés (~ a), bitenkénti és (a & b), bitenkénti vagy (a b), különbségképzés (a ^ b) ELTE TTK, Alkalmazott modul III 1:45 Operátorok precedenciája Az operátorok precedenciája meghatározza, a műveletek halmozása esetén milyen sorrendben történik a végrehajtás a precendencia típusfüggetlen, és rögzített a magasabb precendenciájú hajtódik előbb végre zárójelek használatával befolyásolhatjuk a végrehajtási sorrendet C# precedenciák: (postfix), -- (postfix), [], (),., new, typeof, checked, unchecked 2. + (unáris), - (unáris),!, ~, ++ (prefix), -- (prefix), (<típus>) 3. *, /, % 4. +, - ELTE TTK, Alkalmazott modul III 1:46 Operátorok precedenciája 5. <<, >> 6. >, <, >, <, is, as 7. ==,!= 8. & 9. ^ && ?: 14. =, +=, -=, *=, /=, %=, <<=, >>=, &=, =, ^= a * b c == 7 jelentése: ((a * b) c) == 7 c = a == b % 2 jelentése: c = (a == (b % 2)) ++a++ jelentése: ++(a++) ELTE TTK, Alkalmazott modul III 1:47 Kivételkezelés A program által kiváltott bármilyen nem szabályos tevékenység kivételként jelenik, és lekezelhető A kivétel általános osztálya az Exception, de a műveltek rendszerint ennek valamely speciálisabb változatát keltik Kivételt kezelni egy kivételkezelő (try-catch-finally) szakasszal tudunk, amelyben meg kell adnunk az elfogandó kivétel típusát, és kivétel esetén lefuttathatunk egy megadott utasítássorozatot: try <kivételkezelt utasítások> catch (<elfogott kivétel típusa>) <kivételkezelő utasítások> finally <mindenképp lefuttatandó utasítások> ELTE TTK, Alkalmazott modul III 1:48 8
9 Kivételkezelés Kivételkezelő szakaszt bármely metóduson belül elhelyezhetünk a programban ha a try blokkban kivétel keletkezik, akkor a vezérlés a catch ágra ugrik, az utána következő utasítások így nem futnak le a program ellenőrzi, hogy a kivétel típusa egyezik-e, vagy speciális esete a catch-ben megadottnak, különben tovább dobja a kivételt ha elfogta a kivételt, akkor futtatja a catch ág utasításait a finally blokk használata nem kötelező, de amennyiben van, úgy az abban lévő utasításokat akkor is futtatja, ha keletkezett lekezelt kivétel, és akkor is, ha nem ELTE TTK, Alkalmazott modul III 1:49 Kivételkezelés Lehetőségünk van különböző típusú kivételek elfogására is, amennyiben több catch ágat készítünk a szakaszhoz a kivétel típusát sorban egyezteti az ágakon, és az első találat ágát futtatja amennyiben biztosan el akarunk kapni bármilyen kivételt, kapjuk el az általános Exception típust is pl.: try // kivételkezelt utasítások // kivételkezelő ágak: catch (ArgumentException) catch (NullReferenceException) catch (Exception) ELTE TTK, Alkalmazott modul III 1:50 Kivételkezelés A kivételek üzenettel rendelkeznek, amelyet a kivétel Message tulajdonságán keresztül kérhetünk le Kivételt mi is kiválthatunk tetszőleges pontján a programnak, amelyet egy őt meghívó metódusban kezelni tudunk Kivételt kiváltani a throw utasítással tudunk: throw new <kivétel típusa>(<kivétel szövege>); az utasításra a program futása megszakad, és a következő kivételelfogó utasításra kerül a vezérlés a kivétel típusa lehet egy beépített kivételtípus (pl. ArgumentException, IndexOutOfRangeException, Exception), valamint mi is definiálhatunk kivétel típusokat a kivétel szövegét nem kötelező megadni ELTE TTK, Alkalmazott modul III 1:51 Generikus típusok Generikus programozásra futási időben feldolgozott sablon típusok (generic-ek) segítségével van lehetőség a sablon fordításra kerül, és csak a futásidejű fordításkor helyettesítődik be a konkrét értékre a sablonos osztályt szokás szervernek, a példányosítását kliensnek nevezni pl.: class GenericClass<T> public T item; // használható a T típusként //... GenericClass<int> gc = new GenericClass<int>(); gc.item = 1; ELTE TTK, Alkalmazott modul III 1:52 Generikus típusok Mivel szigorú típusellenőrzés van, ezért fordítási időben a sablonra csak az Object-ben értelmezett műveletek használhatóak, ezt a műveletkört növelhetjük megszorításokkal a megszorítás (where) korlátozza a típus behelyettesítési értékeit, és ezáltal bővíti az alkalmazható metódusok és tulajdonságok körét a behelyettesítéskor így csak az adott típus, vagy annak leszármazottja szerepelhet korlátoznál csak egy osztály, és mellette tetszőleges számú interfész adható meg, ekkor a behelyettesített típusnak valamennyit meg kell valósítania, ez fordítási időben van ellenőrizve Generikus típusok class GenericClass<T> where T : Control, ICloneable, IDisposable // T-re és példányaira használható lesz az // őszosztály, és a fenti interfészek összes // művelete GenericClass<Button> gc; gr = new GenericClass<Button>(); // példányosításkor csak a fentieket megvalósító // osztály szerepelhet, különben fordítási hiba ELTE TTK, Alkalmazott modul III 1:53 ELTE TTK, Alkalmazott modul III 1:54 9
Alkalmazott Modul III 1. gyakorlat. Objektumorientált keretrendszerek, C# alapismeretek
Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Modul III 1. gyakorlat Objektumorientált keretrendszerek, 2011.09.20. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Programozási technológia I 1. gyakorlat. A Java nyelvi alapjai, a NetBeans környezet
Eötvös Loránd Tudományegyetem Informatikai Kar Programozási technológia I 1. gyakorlat A Java nyelvi alapjai, a NetBeans környezet 2012.02.16. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Eseményvezérelt alkalmazások fejlesztése II 1. előadás. A.NET keretrendszer és a C# programozási nyelv. A.NET keretrendszer Eredete
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 1. előadás és a C# programozási nyelv 2015 Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
Szoftvertechnológia alapjai Java előadások
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?
Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás
Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
Eseményvezérelt alkalmazások fejlesztése II. A.NET keretrendszer és a C# programozási nyelv. Objektumorientált programozási nyelvek A Smalltalk nyelv
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II A.NET keretrendszer és a C# programozási nyelv Objektumorientált programozási nyelvek A Smalltalk nyelv 1980-ban
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási
é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
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
A C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char
Bánsághi Anna anna.bansaghi@mamikon.net
ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 1. ELŐADÁS - C# ÁTTEKINTÉS - 1 2015 Bánsághi Anna 1 of 84 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 84
Készítette: Nagy Tibor István
Készítette: Nagy Tibor István Operátorok Műveletek Egy (vagy több) műveleti jellel írhatók le A műveletet operandusaikkal végzik Operátorok fajtái operandusok száma szerint: egyoperandusú operátorok (pl.:
Alkalmazott Modul III 2. előadás. Procedurális programozás: adattípusok, elemi programok. A procedurális programozás Koncepciója
Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Modul III 2. előadás Procedurális programozás: adattípusok, elemi programok 2011.09.26. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 2. előadás
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás 2. előadás Console I/O bővebben Lásd mintaprogram 2015.09.21. Számítástechnika I. 2. Előadás 2 Számábrázolásról
Alkalmazott Modul III 2. előadás. Procedurális programozás: adattípusok, elemi programok
Eötvös Loránd Tudományegyetem Természettudományi Kar Alkalmazott Modul III 2. előadás Procedurális programozás: adattípusok, elemi programok 2011.09.26. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Készítette: Nagy Tibor István
Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke
A C# PROGRAMOZÁSI NYELV
A C# PROGRAMOZÁSI NYELV 2010.02.23. Bevezetés C# nyelv jellemzői 2 Kis és NAGY betű érzékeny Minden utasítást pontos vessző zár. Utasítás zárójel a:,. .NET Framework keretrendszerek 3 Microsoft.NET Framework
Java II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
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
Programozási nyelvek JAVA EA+GY 1. gyakolat
Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program
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"
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
OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek
OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető
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
Eseményvezérelt alkalmazások fejlesztése II 1. előadás. A.NET keretrendszer és a C# programozási nyelv. Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Eseményvezérelt alkalmazások fejlesztése II 1. előadás A.NET keretrendszer és a C# programozási nyelv Giachetta Roberto A jegyzet az ELTE Informatikai Karának
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,
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
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
Programozási nyelvek (ADA)
Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 1. előadás Hasznos weboldal http://kto.web.elte.hu Program felépítése Programegységek (program unit) eljárások (procedure)
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
Java II. I A Java programozási nyelv alapelemei
Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve
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
Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 1. Előadás Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu A tantárgyi
Bánsághi Anna anna.bansaghi@mamikon.net
ESEMÉNYVEZÉRELT PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 2. ELŐADÁS - C# ÁTTEKINTÉS - 2 2015 Bánsághi Anna 1 of 64 TEMATIKA I. C# ÁTTEKINTÉS II. WPF III. Modern UI 2015 Bánsághi Anna 2 of 64
Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente
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
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
Szoftvertervezés és -fejlesztés I.
Szoftvertervezés és -fejlesztés I. Operátorok Vezérlési szerkezetek Gyakorlás 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.
Informatika terméktervezőknek
Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások
Magas szintű programozási nyelvek 2 Előadás jegyzet
Magas szintű programozási nyelvek 2 Előadás jegyzet 1. Rendszerfejlesztés 0. lépés: Elemzés (analízis) 1. lépés: Tervezés a, technológia független rész b, technológia függő rész 2. lépés: Megvalósítás
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
Programozás 2., I. kötet Az objektumorientált paradigma alapjai
TÁMOP-4.1.1.F-14/1/KONV-2015-0009 A GÉPÉSZETI ÉS INFORMATIKAI ÁGAZATOK DUÁLIS ÉS MODULÁRIS KÉPZÉSEINEK KIALAKÍTÁSA A PÉCSI TUDOMÁNYEGYETEMEN Achs Ágnes Szendrői Etelka Programozás 2., I. kötet Az objektumorientált
A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok
A szemantikus elemzés helye Forrásprogram Forrás-kezelő (source handler) Lexikális elemző (scanner) A szemantikus elemzés feladatai Fordítóprogramok előadás (A, C, T szakirány) Szintaktikus elemző (parser)
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
Vizuális, eseményvezérelt programozás X. V 1.0
Vizuális, eseményvezérelt programozás X. V 1.0 ÓE-NIK, 2011 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,
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
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:
Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,
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
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
Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,
C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4
C# versus Java Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3 Bedők Dávid 2016.10.01. v0.4 Azonosságok I. Curly-bracket nyelvek ({}) C, C++, PHP, JavaScript, stb.) ProgrammingTheorem
A.NET Framework és programozása C# nyelven. Kedd 16-17 30 I104
A.NET Framework és programozása C# nyelven Kedd 16-17 30 I104 Feltételek I104 Visual Studio 2013 Letölthető http://msdn.mik.uni-pannon.hu oldalról Aki saját gépet hoz, annak javasolt a legújabb verzió
AWK programozás, minták, vezérlési szerkezetek
10 AWK programozás, minták, vezérlési szerkezetek AWK adatvezérelt szkriptnyelv text processing, adat kiterjesztés, tagolt adatok automatizált soronkénti feldolgozása a forrásállományt soronként beolvassa
Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} };
A C++ kódokban lévő makrókat melyik egység dolgozza fel az alábbiak közül? preprocessor A szabványos C++-ban nem is írhatunk makrókat (csak C-ben) assembler linker Az alábbi példában a Foo f(5); konstruktor
Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN
Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.
Programozási nyelv Java
Programozási nyelv Java 1. gyakorlat Félév tematikája Bevezetés, alapok Vezérlési szerkezetek Eljárások, függvények Csomagok Tömbök, adatbevitelek Osztályok, objektumok, Interfészek Öröklődés, absztrakt
Bevezetés a C++ programozási nyelvbe
Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet
Mintavételes szabályozás mikrovezérlő segítségével
Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés
1. Bevezetés A C++ nem objektumorientált újdonságai 3
Előszó xiii 1. Bevezetés 1 2. A C++ nem objektumorientált újdonságai 3 2.1. A C és a C++ nyelv 3 2.1.1. Függvényparaméterek és visszatérési érték 3 2.1.2. A main függvény 4 2.1.3. A bool típus 4 2.1.4.
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
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
A szerzõrõl... xi Bevezetés... xiii
TARTALOMJEGYZÉK A szerzõrõl...................................................... xi Bevezetés...................................................... xiii I. rész A Visual Basic 2005 környezet 1. óra Irány
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,
Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 2. előadás Adattípusok megvalósítása egységbe zárással 2014.02.17. Giachetta Roberto groberto@inf.elte.hu
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
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
1. Egyszerű (primitív) típusok. 2. Referencia típusok
II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Az Integrált Fejlesztői Környezet C++ alapok Az Integrált Fejlesztői Környezet Visual Studio 2013 Community Edition Kitekintés: fordítás Preprocesszor Fordító
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
Programozás I. Első ZH segédlet
Programozás I. Első ZH segédlet Ezen az oldalon: kiírás az alapértelmezett (hiba) kimenetre, sztring konkatenáció, primitív típusok, osztály létrehozás, példányosítás, adattagok, metódusok Kiíratás alapértelmezett
Imperatív és procedurális programozás a Javában
Imperatív és procedurális programozás a Javában Kozsik Tamás kto@elte.hu http://kto.web.elte.hu/ Eötvös Loránd Tudományegyetem Programozási Nyelvek és Fordítóprogramok Tanszék 2008. Kozsik Tamás (ELTE)
1) Hány byte-on tárol a C++ egy karaktert (char)? implementáció-függő ( viszont lásd 79. megjegyzés ) 1 8 4
1) Hány byte-on tárol a C++ egy karaktert (char)? implementáció-függő ( viszont lásd 79. megjegyzés ) 1 8 4 2) Hány byte-on tárol a C++ egy float-ot? implementáció-függő 6 4 8 3) Hány byte-on tárol a C++
Bevezetés a programozásba Előadás: A const
Bevezetés a programozásba 2 6. Előadás: A const ISMÉTLÉS Interface - Implementation struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; }; void Particle::rajzol() { gout
Objektumelvű programozás
Objektum, osztály Objektumelvű programozás Az elemzés együttműködő objektumok rendszereként fogalmazza meg a feladatot. Objektum-központú elemzés A tervezés a feladat tárgyköreit egy-egy objektum felelősségévé
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
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
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök
Programozás II gyakorlat. 6. Polimorfizmus
Programozás II gyakorlat 6. Polimorfizmus Típuskonverziók C-ben: void * ptr; int * ptr_i = (int*)ptr; Ez működik C++-ban is. Használjuk inkább ezt: int * ptr_i = static_cast(ptr); Csak egymással
I. rész: A Microsoft Visual C# és a Microsoft Visual Studio 2005 bemutatása. 1. Üdvözöljük a C# világában! 3
Köszönetnyilvánítás Bevezetés Honnan kezdjük a könyv olvasását? A könyvben használt konvenciók és egyéb jelölések Konvenciók Egyéb jelölések Online kiegészítő tartalom Technológiai frissítések Rendszerkövetelmények
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
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
Programozási technológia I.
Programozási technológia I. 2.gyakorlat A tárgy célja A tárgy alapvető Java ismeretek nyújt. A fő célja, hogy a hallgatók képesek legyenek az UML diagramokból Java kód előállítására. Félév tematikája Bevezetés,
Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o
Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform
Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 4. előadás 2014.03.03. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Programok
AWK programozás, minták, vezérlési szerkezetek
10 AWK programozás, minták, vezérlési szerkezetek AWK futtatási módok AWK parancs, közvetlen programkódmegadás: awk 'PROGRAMKÓD' FILE példa: ls -l awk '{print $1, $5}' a programkód helyére minden indentálás
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:
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
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
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
1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3
Darvay Zsolt Típusok és nevek a forráskódban Állandók és változók Hatókörök és az előfeldolgozó Bevitel és kivitel Kifejezések Utasítások Mutatók Függvények Struktúrák és típusok Állománykezelés C programozás
Kifejezések. Kozsik Tamás. December 11, 2016
Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},
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,
Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik
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
Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani
Mi a legabsztraktabb típus a JAVA-ban? Object Mikor preferált interface-ek használata a konkrét típusok helyett? Ha egy osztály több interfacet is használhasson, vagy ha fvek implementálását a az osztályra
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