Objektum-orientált programozás Stringműveletek

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Osztály leszármaztatás
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Programozás III STRING-XML.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Adatbányászati technikák (VISZM185)
Öröklődés 2..
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
Osztályok Garbage collection.  általában minden osztálynak vannak adattagjai és/vagy metódusai ◦ adattagok megadása:  [láthatóság] [static] [final]
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Mutatók, tömbök, függvények
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/10 C++ programozási nyelv Gyakorlat - 5. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
C# tagfüggvények.
C# tagfüggvények.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
A Java jellemzői Hordozható, platformfüggetlen forráskód és bájtkód szinten forráskód és bájtkód szinten Tisztán objektumorientált csak osztályok, illetve.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
V 1.0 ÓE-NIK, Programozás I. A Microsoft Visual Studio 2010 használata.
Összetett adattípusok
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1. Gyakorlat - Alapok 1. Írjon konzolprogramot, amely kiírja a “Hello ELTE” üzenetet! Használja a System.out.println() -t! 2. Írjon konzolprogramot, amely.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
Java programozási nyelv Filekezelés
Komoróczy Tamás 1 Java programozási nyelv Stringek.
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
V 1.0 ÓE-NIK-AII, Programozás I. Karaktersorozatok Feladatok.
Operátorok Vezérlési szerkezetek Gyakorlás
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 4. gyakorlat.
Informatikai gyakorlatok 11. évfolyam
V 1.0 Programozás I. Osztályok, objektumok 1 ÓE-NIK-AII, 2014.
V 1.0 OE-NIK-AII, Programozás I. Szöveges fájlok kezelése String műveletek Feladatok.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Krizsán Zoltán, iit C# osztályok 2 Adattagok  Osztály hatáskörben definiált változó.  Formája: [attribútum] [módosító] típus azonosító [=kezdő érték][,
V 1.0 OE-NIK, Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok.
Szöveges fájlok kezelése String műveletek Feladatok
Szöveges fájlok kezelése
„Designer-barát” játéklogika
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
B M Java Programozás 1. Gy: Java alapok IT A N Ismétlés ++
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Konverziós operátorok
Függvénysablonok használata
Előadás másolata:

Objektum-orientált programozás Stringműveletek Programozás I. Objektum-orientált programozás Stringműveletek ÓE-NIK-AII, 2015

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, de nem elégséges feltétele a sikeres zárthelyinek, illetve vizsgának. Sikeres zárthelyihez, illetve vizsgához a jelen bemutató tartalmán felül a kötelező irodalomként megjelölt anyag, a gyakorlatokon szóban, illetve a táblán átadott tudnivalók ismerete, valamint a gyakorlatokon megoldott példák és az otthoni feldolgozás céljából kiadott feladatok önálló megoldásának képessége is szükséges. ÓE-NIK-AII, 2015

Objektum-orientált programozás Stringműveletek Programozás I. Objektum-orientált programozás Stringműveletek ÓE-NIK-AII, 2015

Előadáson volt - OO alapfogalmak Az osztály definiálja azokat a „tulajdonságokat és képességeket”, amelyeket az adott osztályba tartozó összes objektum birtokol Az osztályleírás így egyfajta sablont ad az objektumokhoz Tartalmazza, hogy az objektumok hogyan jönnek létre és hogyan semmisülnek meg, milyen adatokat tartalmaz egy objektum, és ez az adat milyen módon manipulálható Az objektum egy, az osztályleírás alapján létrejött diszkrét entitás Minden objektum valamilyen létező osztályba tartozik (=adott osztály példánya), egy osztálynak több objektuma is lehet Az osztály által meghatározott adatokat tartalmazza ÓE-NIK-AII, 2015

Előadáson volt – osztály szerkezete Deklarálás a class kulcsszóval. Az osztályok deklarációja tartalmazza az összes tag definícióját. class Hallgato { string nev, neptun; int szuletesiev; bool aktivstatusz = true; public Hallgato(string nev, string neptun, int szuletesiev) //... } public int Eletkor() { /* */ } public void StatuszValtas(bool allapot) { /* */ } Adatmezők deklarálása Értékük inicializálható Metódusok A visszatérési értéket és a paramétereket magában foglaló, a kifejtést nem tartalmazó megadási formát szokták a függvény szignatúrájának nevezni ÓE-NIK-AII, 2015

Előadáson volt - példányosítás Minden osztálynak rendelkeznie kell konstruktorral Ha mi magunk nem deklarálunk konstruktort, akkor és csak akkor a C# fordító automatikusan létrehoz egy paraméter nélküli alapértelmezett konstruktort class Hallgato { public string nev, neptun; public int szuletesiev; public bool aktivstatusz; } class Program static void Main(string[] args) Hallgato hallgato1 = new Hallgato(); hallgato1.szuletesiev = 1997; hallgato1.nev = "Alaptalan Aladár"; hallgato1.neptun = "A1A1A1"; A new operátor elvégzi az objektum számára a memóriafoglalást, és meghívja a megfelelő konstruktort Osztályok és objektumok tagjainak elérése: „ . ” operátor Példányszintű tagoknál a példány nevét, osztályszintű tagoknál (lásd később) az osztály nevét kell az operátor elé írnunk Az osztály saját metódusainak belsejében nem kell kiírni semmit, ilyenkor egyértelmű hogy a saját tagokra gondolunk ÓE-NIK-AII, 2015

Előadáson volt - konstruktor class Hallgato { string nev, neptun; int szuletesiev; bool aktivstatusz; public Hallgato(string nev_, string neptun_, int szuletesiev_) nev = nev_; neptun = neptun_; szuletesiev = szuletesiev_; } A konstruktor neve mindig megegyezik az osztály nevével Nincs visszatérési értéke (void sem) A névütközések elkerülése végett a paraméterlista változónevei eltérőek kell legyenek Hallgato hallgato1 = new Hallgato("Alapos Aladár", "A1A1A1", 1997); ÓE-NIK-AII, 2015

Előadáson volt - this referencia class Hallgato { string nev, neptun; int szuletesiev; bool aktivstatusz; public Hallgato(string nev, string neptun, int szuletesiev) this.nev = nev; this.neptun = neptun; this.szuletesiev = szuletesiev; } A this hivatkozás az aktuális példányra, így a példány adatmezőinek adjuk értékül a paraméterlista azonos nevű változóinak értékét Referencia arra az objektumra, amelyik a metódust éppen végrehajtja Nem kell deklarálni, ezt a fordítóprogram automatikusan megteszi ÓE-NIK-AII, 2015

Előadáson volt - láthatóság Az osztály minden tagjához, a mezőkhöz és a metódusokhoz is láthatósági szint van rendelve Azt befolyásolja, hogy elérhető-e az adott tag osztályon kívülről, vagy csak belül érvényes Publikus: nyilvános, osztályon kívülről is elérhető Privát: csak az osztályon belül érhető el Léteznek egyéb láthatóságok is, ezeket a következő félévekben tárgyaljuk Célunk a lehető legszűkebb elérés megvalósítása! A tagok alapértelmezett láthatósága privát! private string nev, neptun; public int szuletesiev; bool aktivstatusz; ÓE-NIK-AII, 2015

Előadáson volt - tulajdonság Tulajdonság segítségével az olvasás és írás metódusok működése a programban megadhatóak A felhasználó kód számára metódusként viselkednek A hozzáférési metódusok bármilyen műveletet végrehajthatnak Nem célszerű hosszan tartó műveletekkel lelassítani a tulajdonság elérését class Hallgato { private int szuletesiev; public int SzuletesiEv get { return szuletesiev; } set { szuletesiev = value; } } A tulajdonság elnevezése gyakran az adatmező nevének nagy kezdőbetűs változata A get az olvasáskor, a set az íráskor lefutó műveleteket tartalmazza. Olvasáskor vissza kell adni egy értéket a return kulcsszóval. Írás esetén a híváskor átadott értéket a value nevű rejtett paraméter tartalmazza ÓE-NIK-AII, 2015

Gyakorló feladat Készítsünk Háromszög osztályt, amely egy háromszöghöz tárolja a három oldal hosszúságát! Legyen képes kerület, terület számítására. class Haromszog { double a, b, c; public Haromszog(double a, double b, double c) this.a = a; this.b = b; this.c = c; } public double Kerulet() return a + b + c; public double Terulet() //Hérón-képlet double s = Kerulet() / 2; return Math.Sqrt(s * (s - a) * (s - b) * (s - c)); Mutassunk rá, hogy a metódusok elérik (látják és módosítani is tudják) az adattagokat, pedig paraméterként nem kapták meg azokat. ÓE-NIK-AII, 2015

Gyakorló feladat Egészítse ki a Háromszög osztályt egy olyan konstruktorral, amely véletlenszerű (0-100 közötti) oldalhosszúsággal rendelkező háromszöget generál. A keletkező háromszögnek szerkeszthetőnek kell lennie! public Haromszog() { Random rand = new Random(); do a = rand.Next(0, 101); b = rand.Next(0, 101); c = rand.Next(0, 101); } while (!SzerkeszthetoEzAHaromszog()); ... private bool SzerkeszthetoEzAHaromszog() return (a + b > c) && (a + c > b) && (b + c > a); ÓE-NIK-AII, 2015

Gyakorló feladat Egészítse ki a Háromszög osztályt úgy, hogy módosíthatóak legyenek az oldalhosszak, de csak úgy, hogy a háromszög szerkeszthető maradjon! (Rossz oldalhossz megadása esetén maradjon meg az eredeti hossz.) private double a; public double A { get { return a; } set double regiA = a; a = value; if (!SzerkeszthetoEzAHaromszog()) //Ebben a megoldásban egyszerűen csak felhasználtuk ezt a régebben meglévő függvényt. a = regiA; } ... ÓE-NIK-AII, 2015

Gyakorló feladatok Készítsen Kör osztályt, amely egy kört a középpontja koordinátáival és a sugárral reprezentál! Az osztályban legyen metódus, ami megállapítja, hogy egy adott pont benne van-e a körben vagy sem. Készítsen példányt a tesztelésre: kérje be a felhasználótól egy kör adatait, majd kérjen be pontokat, és mondja meg, ezek benne vannak-e a körben vagy sem. Készítsen a Körhöz egy új konstruktort, amely megadott sugárral, de véletlenszerű középponttal hozza létre a példányt. Egészítse ki a Kör osztályt úgy, hogy legyen metódusa, amely megállapítja, hogy egy adott pont a kör középpontjától pontosan mekkora távolságra van. Módosítsa a Kör osztályt Céltábla osztállyá úgy, hogy legyen benne metódus, amely egy adott pontnak a középponttól való távolsága szerint különböző pontszámokat ad! - Ezután készítsen céllövő játékot: hozzon létre egy véletlenszerű középpontú céltáblát, majd kérjen be a felhasználótól 15 lövést (pontot), és számolja, hány pontnyi találata van a felhasználónak a 15 lövés után. Minden lövés után segítségül közölje, mekkora volt a lövés távolsága a céltáblától. ÓE-NIK-AII, 2015

Objektum-orientált programozás Stringműveletek Programozás I. Objektum-orientált programozás Stringműveletek ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal A karaktersorozat („string”) karakterek halmazaként is felfogható Mivel gyakran használt, igen fontos típusról van szó, rengeteg beépített segédfunkció áll rendelkezésre hozzá Néhány kiemelt művelet és segédfunkció: Összekapcsolás (+ operátor) Részsorozat kiválasztása (Substring függvény) Részsorozat keresése (IndexOf /LastIndexOf, Contains) Konverziók (változónév.ToString() és típusnév.Parse() ) Kis- és nagybetűs formára alakítás (ToUpper, ToLower) Formázott megjelenítés (String.Format) Karaktersorozat kezelése karakterenként ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal Összekapcsolás class Összekapcsolás { static void Main() string str1 = "Szervusz"; string str2 = "C#"; string str3 = "világ!"; string str4 = str1 + ", " + str2 + " " + str3; System.Console.WriteLine(str4); } ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal int proba = 0; string be; do { Console.Write(proba + ". próba: "); be = Console.ReadLine(); proba++; } while (be == ""); Console.Write(proba + 1 + ". próba: "); Console.Write("A(z) " + proba + 1 + ". próba: "); Console.Write("A(z) " + (proba + 1) + ". próba: "); Console.Write(proba + ". próba: ");  0, 1, 2 Console.Write(proba + 1 + ". próba: ");  1, 2, 3 Console.Write("A(z) " + proba + 1 + ". próba: ");  az első összeadás miatt string  01, 11, 21 Console.Write("A(z) " + (proba + 1) + ". próba: ");  1, 2, 3 ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal Metódusok hívása: stringváltozó.valami(); Előtte inicializálni kell a változót A forrásváltozót a metódus hívása NEM módosítja, a művelet eredménye a kimenetben lesz stringváltozó=stringváltozó.valami();  visszaírás stringváltozó2=stringváltozó.valami();  átírás Az első karakter sorszáma: 0 ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal class Részsorozat { static void Main() string s1, s2; s1 = "Hello, World"; s2 = s1.Substring(7, 5); // Kezdő index: 0 System.Console.WriteLine(s2); } ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal Részsorozat keresése: IndexOf(substr) / Contains(substr) class Keresés { static void Main() int i; string s1; s1 = "Ez egy karaktersorozat"; i = s1.IndexOf("karakter"); System.Console.WriteLine(i); i = s1.IndexOf("egy"); i = s1.IndexOf("ez nincs benne"); } ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal Konverziók A stringgé történő konverzió a C# nyelven MINDEN változónál ugyanúgy történik: byte b=250; float f=3.14f; string s1=b.ToString(); string s2=f.ToString(); Stringből számmá tudunk konvertálni: string s="123"; string s2="123,456"; byte b=byte.Parse(s); float f=float.Parse(s2); ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal Kis- és nagybetűs formára alakítás class CsupaKisÉsNagybetű { static void Main() int i; string s; i = 1982; s = "Lajos születési éve " + i; System.Console.WriteLine(s.ToUpper()); System.Console.WriteLine(s.ToLower()); } ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal Formázott megjelenítés string mi = "árvíztűrő tükörfúrógép"; string milyen = "legjobb"; int db = 123; float ar = 2.5f;   string kimenet = string.Format("Ha nekem {0, 5} darab {1}em lenne {2:F} forintért, az lenne a {3}", db, mi, ar, milyen); Console.WriteLine(kimenet);  Ha nekem 123 darab árvíztűrő tükörfúrógépem lenne 2,50 forintért, az lenne a legjobb ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal Formázott megjelenítés vezérlőkarakterei Kód Számtípus Magyarázat Példa C Egész és valós Helyi pénznem formázási szabályai szerinti kijelzés 1 435,5 Ft (Magyarország) $1435.5 (USA) D Csak egész Általános egész szám 1435 E Tudományos jelölésmód 1,4355E+003 (Magyarország) 1.4355E+003 (USA) F Fixpontos decimális számkijelzés 1435,50 (Magyarország) 1435.50 (USA) G Általános számkijelzés 1435,5 (Magyarország) 1435.5 (USA) N Helyi területi beállítások szerinti számkijelzés 1 435,500 (Magyarország) 1,435.500 (USA) P Százalékos formátum 143 550,00 % X Hexadecimális formátum 59B ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal Név Feladat Paraméterek Length String hossza NEM ELJÁRÁS  int adat StartsWith(), EndsWith() String elejének / végének ellenőrzése substring  bool visszatérési érték PadLeft(), PadRight() String feltöltése extra karakterekkel width / width, paddingChar Trim(), TrimStart(), TrimEnd() Whitespace eltávolítása trimChars Remove() Részsorozat eltávolítása index / index, count Replace() Részsorozat cseréje string, string / char, char Elmondani: Split() [bármennyi char / char[] / string[] ]  szétvágja a stringet, tömböt csinál az elemekből… még nem tudjuk h mi az. Amikor a tömbről szó lesz, úgyis használjuk majd ÓE-NIK-AII, 2015

Műveletek karaktersorozatokkal Karaktersorozat kezelése karakterenként (substring helyett) class Karakterenként { static void Main() int i; string s = "Karaktersorozat"; i = 1; while (i < s.Length) System.Console.WriteLine(s[i]); i++; } ÓE-NIK-AII, 2015

Gyakorló feladatok Írjon programot amely egy stringből eltünteti a szóközöket! Alkalmazza a stringműveleteket! Írjon programot, amely egy szövegben megszámolja a magánhangzókat! Alkalmazza a stringműveleteket! Készítsen programot, amely egy adott karaktersorozatot (pl. „Amelyik kutya ugat, az a kutya nem harap”) minden adott karaktersorozatát (pl. „kutya”) egy adott karaktersorozatra (pl. „macska”) cseréli! ÓE-NIK-AII, 2015

Gyakorló feladatok Készítsen objektum-orientált szemléletű programot utazók állomásainak nyilvántartására! Tárolja minden példányban, hogy mely nagyvárosokban járt eddig az adott utazó! A megoldást úgy alakítsa ki, hogy a példányokban egy stringben tárolja az eddig meglátogatott városokat, ezeket pedig pontosvesszővel válassza el egymástól! Készítse el az osztálydefiníciót, a konstruktort! Készítsen void Utazik(string hova) nyilvános metódust, amely a paraméterként megadott helyet hozzáadja az eddigiekhez! Készítsen nyilvános bool JartE(string hol) nyilvános metódust, amely megadja, hogy az utazásai során járt-e a paraméterként megadott városban! Készítsen nyilvános metódust int HanyHelyenJart() néven, amely megadja, hogy az utazó hány helyen járt eddig! Készítse el on-the-fly értéket kapó tulajdonságként is! Készítsen metódust, amely két paraméterként megadott városról megmondja, hogy melyikben járt előbb az utazó! string HolVoltElobb(string egyik, string masik) Készítsen metódust, amely visszaadja azokat a helyeket, ahol az utazó járt (ismétlődés nélkül!) string[] HelyekIsmetlesNelkul() Készítsen metódust, amely megadja azokat a helyeket, ahol az utazó többször is járt! string[] HelyekAholTobbszorJart() ÓE-NIK-AII, 2015