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,
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 -