Budapest University of Technology and Economics, Faculty of Electrical Engineering and Informatics

    Belépés
    címtáras azonosítással

    vissza a tantárgylistához   nyomtatható verzió    

    Objektumorientált programozás

    A tantárgy angol neve: Object Oriented Programming

    Adatlap utolsó módosítása: 2018. június 26.

    Budapesti Műszaki és Gazdaságtudományi Egyetem
    Villamosmérnöki és Informatikai Kar
    Üzemmérnök-informatikus szak, BProf képzés
    Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
    VIIIBA02 2 2/0/3/f 7  
    3. A tantárgyfelelős személy és tanszék Dr. Goldschmidt Balázs, Irányítástechnika és Informatika Tanszék
    4. A tantárgy előadója Dr. Goldschmidt Balázs, IIT
    5. A tantárgy az alábbi témakörök ismeretére épít

    Programozás alapjai: egyszerű és összetett adatszerkezetek (változók, listák, fák), alapvető algoritmusok (kiválasztás, rendezés, rekurzió), vezérlési szerkezetek (szekvencia, iteráció, szelekció).

    6. Előtanulmányi rend
    Kötelező:
    Training.Code=("5N-A9") ÉS
    TárgyEredmény( "BMEVIEEBA01" , "aláírás" , _ ) = -1

    A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

    A kötelező előtanulmányi rendek grafikus formában itt láthatók.

    7. A tantárgy célkitűzése

    A tantárgy célkitűzése az objektumorientált gondolkodásmód és az OO programozási nyelvek lehetőségeinek kihasználására való készség kialakítása, amihez a Java nyelv ad szintaktikai és szemantikai keretet.

    A tárgyat sikeresen elvégző hallgatók megismerik:

    ·         a típusos nyelvek és a Java szintaxis alapjait (konstrukciós szint - K4)

    ·         OO programozás alapelveit. Ezen belül az objektum fogalmát (az adatok és műveletek egységbezárása, információrejtés, láthatóság), az osztály és példány kapcsolatát (pl. konstruktor), az osztályhierarchia, öröklés fogalmát (késői kötés, metódusok felüldefiniálása,virtuális függvények, absztrakt osztályok, heterogén kollekció, interfészhasználat). (konstrukciós szint - K4)

    ·         Kivételkezelés alapjait (alkalmazás szint - K3)

    ·         Java I/O és serialization alapjait. (alkalmazás szint - K3)

    ·         Alapvető segédosztályok használatát (Scanner, Random, BigInteger, BigDecimal, szövegfeldolgozás) (konstrukciós szint - K4)

    ·         Genericitás alapjait (genericitás és öröklés, kollekció-keretrendszer). (konstrukciós szint - K4)

    ·         Szálkezelés alapjait (szál fogalma, kölcsönös kizárás, szinkronizálás, jelzések küldése kezelése, szálbiztos kollekciók, speciális szálosztályok) (alkalmazás szint - K3)

    ·         Automatizált tesztelés menetét Java nyelven (JUnit) (alkalmazás szint - K3)

    8. A tantárgy részletes tematikája

    Az előadások tematikája:

    Előadás

    Előadás anyaga

    1

    Bevezetés. Hello World Java nyelven, ennek kapcsán a legalapvetőbb Java jellemzők bemutatása. Típusosság alapjainak bevezetése, Java primitív típusok, operátorok, vezérlési szerkezetek.

    2

    Java OO jellemzőinek megalapozása. Objektumok és osztályok fogalmának bevezetése egyszerű példán (Complex szám), attribútumok, metódusok jellemzői. String és tömb mint objektumok.

    3

    Az objektum-orientáltság további elemei: öröklés, kései kötés, metódusok felüldefiniálása, virtuális függvények, absztrakt osztályok, interfészek. UML osztálydiagram alapelemei.

    4

    Kivételkezelés Java nyelven. Input-output kezelés Java nyelven, ennek objektumorientált megoldása (InputStream, OutputStream, Reader, Writer és leszármazottaik). Pipe-ok, filterek, File.

    5

    Hatékony szövegfeldolgozás Java nyelven: String osztály vonatkozó metódusai, StringTokenizer, Scanner.

    6

    Heterogén kollekció fogalma, használata. Az Object osztály elemzése és metódusainak felüldefiniálása, klónozás (equals, clone, stb.)

    7

    Kollekciók keretrendszere az Object használatával: Collection, List, Set, Map, Iterator, Iterable, Comparator, Comparable. Primitív típusok wrapper osztályai, előnyök-hátrányok.

    8

    Genericitás alapjai, a kollekció keretrendszer generikussá tétele, az ezzel kapcsolatos (öröklésből fakadó) problémák és megoldásaik.

    9

    Alapvető utility osztályok és használatuk: LocalDate, LocalTime, Calendar, Random, BigInteger, BigDecimal, stb.).

    10

    Annotációk használata Java nyelven. Objektumok állapotának kimentése és visszatöltése szabványos eszközökkel.

    11

    Automatizált tesztelés megvalósítása és végrehajtása Java környezetben. JUnit. JUnit fogalmai, hibatípusok, closure-ök, stb.

    12

    Szálkezelés alapjainak bemutatása. Kölcsönös kizárás, szinkronizálás, jelzések küldése kezelése. Szálbiztos kollekciók. Speciális szálosztályok (java.util.concurrent)

    13

    Kitekintés a hatékony nyelvi eszközök irányába: lambda kifejezések, stream-ek, újabb Java verziók újításai (var, stb).

    14

    Kitekintés a nagyméretű rendszerek irányába: Jakarta Enterprise Edition (JEE) alapjai.

    A gyakorlatok (laborok) tematikája:

    Gyakorlat

    Gyakorlat anyaga

    1

    Ismerkedés a fejlesztőezközzel (eclipse). Python példák Java nyelven.

    2

    Egyszerű OO alkalmazás készítése és tesztelése. Python függvények Java metódussá alakítása.

    3

    Örökléssel kapcsolatos feladatok: ember-alkalmazott, stb. Interfészek és absztrakt osztályok.

    4

    I/O feladatok: beolvasás különböző fájlokból, filterek és pipe-ok alkalmazása (tömörítés, kódolás, stb.)

    5

    Szövegfeldolgozó alkalmazás készítése, kisméretű shell-szerű alkalmazás készítése.

    6

    Heterogén kollekció példája: állatkert, bevásárlás, stb. Klónozás gyakorlása.

    7

    Kollekció-keretrendszer feladatok: kis parancssori nyilvántartás készítése a List, Iterator, Comparator gyakorlása.

    8

    Kollekciós feladat átalakítása generikussá.

    9

    Kollekciós feladat kibővítése naplózással, dátumkezeléssel, stb.

    10

    Kollekciós feladat kibővítése szabványos állapotmentéssel és -visszatöltéssel. Hatékonyságvizsgálat.

    11

    Előre elkészített alkalmazáshoz JUnit tesztek készítése, futtatása, hibák javítása.

    12

    Egyszerű termelő-fogyasztó feladat megoldása többszálú alkalmazásban.

    13

    HF beadása

    14

    HF beadása

    9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

    Előadás és laboratórium. A házi feladat elkészítése során az adott feladattól függően az elérhető osztálykönyvtárak és megoldások használatához a szakirodalom önálló feldolgozására is szükség lehet.

    10. Követelmények

    A szorgalmi időszakban:

    A laboratóriumi foglalkozásokon való megjelenés kötelező, az elmulasztott laborgyakorlatok nem pótolhatók. A laboratóriumi foglalkozáson a laborvezetők ellenőrző méréssel (az előírt feladatok egy megadott részének elkészülte) ellenőrzik a hallgatók felkészültségét. A félév teljesítésének feltétele, hogy az ellenőrző mérések legalább 2/3-a sikerrel záruljon.

    A félév során 6 előre meghirdetett alkalommal kis zárthelyi dolgozatot íratnak a laborvezetők. A kis zárthelyi dolgozatokból a 4 legeredményesebb eredményét (dolgozatonként 0-5 pont között) vesszük figyelembe. Ha valaki 4-nél kevesebb ellenőrző dolgozatot írt, akkor a meg nem írt dolgozatok eredményét 0-nak tekintjük. A dolgozatok egyéb időpontban nem pótolhatók.

    Minden hallgatónak egy nagy házi feladatot is meg kell oldania. A nagy házi feladatokat a 13. heti laboralkalom kezdetéig kell beadni. A házi feladatok pótlólagos beadására a 14. heti laboralkalom kezdetéig van mód.

    A félévelismerést jelentő félévközi jegy megszerzésére a következők együttes teljesülésekor van lehetőség:

    ·         a legjobb 4 kis zárthelyi dolgozat átlaga legalább 2,00,

    ·         az ellenőrző mérések legalább 2/3-a sikeres volt,

    ·         a nagy házi feladat a kiírás szerint elkészült, a laborvezető a kijelölt laboralkalommal személyesen átvette, ellenőrizte és elfogadta a hiánytalan dokumentációt és az elkészített programot, melyet együtt ki is próbáltak,

    ·         a hallgató a programozási laborgyakorlatokat rendszeresen látogatta (hiányzása nem haladja meg a TVSz szerint megengedett 30%-os mértéket).

    A fenti feltételek bármelyikének nem teljesülése esetén a félévközi jegy elégtelen ill. a tárgyat a hallgató nem teljesítette.

    A vizsgaidőszakban:

    Nincs

    Az osztályzat megállapításának módja:

    A 4 legjobb kis zárthelyi dolgozat pontszámának átlaga  határozza meg az alapot, amelytől a laborvezető legfeljebb 1,0 ponttal eltérhet a hallgató laborgyakorlatokon tanúsított felkészültsége, teljesítménye és aktivitása, valamint a házi feladat minősége alapján. Az így kialakuló pontszámnak az alsó egész része adja az érdemjegyet.

    11. Pótlási lehetőségek

    Laboralkalmak és az ellenőrző mérések nem pótolhatók. A házi feladat kései beadására vagy pótlására legkésőbb a 14. heti laboralkalmon van lehetőség.

    12. Konzultációs lehetőségek

    A laboralkalmak során. Ettől eltérve a tárgy oktatóival eseti megállapodás szerint.

    13. Jegyzet, tankönyv, felhasználható irodalom

    ·         Kövesdán Gábor: Szoftverfejlesztés Java SE platformon, SZAK Kiadó, 2014.

    ·         Nyékyné Dr. Gaizler Judit (szerk.): Java 2 I-II. Útikalauz programozóknak 5.0, ELTE TTK Hallgatói Alapítvány, 2009

    ·         Glenn Rowe: Java-programozás, Panem Kiadó, 2002

    14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka

    Kontaktóra

    70

    Készülés előadásokra

    14

    Készülés gyakorlatra

    0

    Készülés laborra

    42

    Készülés zárthelyire

    24

    Házi feladat elkészítése

    44

    Önálló tananyag-feldolgozás

    16

    Vizsgafelkészülés

    0

    Összesen

    210

    15. A tantárgy tematikáját kidolgozta

    Dr. Goldschmidt Balázs, IIT

    IMSc tematika és módszer -
    IMSc pontozás -