„Objektumorientált programozás” változatai közötti eltérés

Előadás: Óra anyagának hozzáadása
 
(35 közbenső módosítás, amit 4 másik szerkesztő végzett, nincs mutatva)
10. sor: 10. sor:
|kiszh=6 db
|kiszh=6 db
|nagyzh=nincs
|nagyzh=nincs
|hf=1 nagyházi
|hf=1 nagy
|vizsga=nincs
|vizsga=nincs
|tad=https://portal.vik.bme.hu/kepzes/targyak/VIIIBA02/
|tad=https://portal.vik.bme.hu/kepzes/targyak/VIIIBA02/
|targyhonlap=https://www.iit.bme.hu/oktatas/tanszeki_targyak/BMEVIIIBA02
|targyhonlap=https://www.iit.bme.hu/oktatas/tanszeki_targyak/BMEVIIIBA02
|levlista=  }}
|levlista=  }}
{{TODO BProf}}


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, amelyhez a Java nyelv ad szintaktikai és szemantikai keretet.
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, amelyhez a Java nyelv ad szintaktikai és szemantikai keretet.
22. sor: 20. sor:


== Követelmények ==
== Követelmények ==
=== Előtanulmányi rend ===
=== Előtanulmányi rend ===
*A tárgy felvételéhez a [[A programozás alapjai | A programozás alapjai]] aláírás szükséges.
* A tárgy felvételéhez [[A programozás alapjai]] aláírás szükséges.


=== A szorgalmi időszakban ===
=== Szorgalmi időszakban ===
*A '''labor'''on megjelenés kötelező. Lesznek ellenőrző feladatok (röpZH/beugró), ezeknek a 2/3-ának (kb. 70%) teljesülnie kell.
*A '''kisZH-k''' sikeres megírása. 6-ból a 4 legjobb lesz beszámítva (Darabonként 0-5 pont). Ha valaki 4-nél kevesebb dolgozatot írt, a meg nem írt dolgozat 0 pontosnak számít.
*A '''nagyházi''' 13. héten való leadása. Az időn belüli leadáson kívül beletartozik a háziba a dokumentáció(k), illetve a laborvezetővel előre egyeztett laboralkalmon be kell mutatni a házit, ki kell próbálni. Leteszteli (akár kérdésekkel), hogy tényleg a hallgató csinálta-e.


*'''Pótlási lehetőségek:'''
==== Laborok ====
**A '''nagyHF''' a szorgalmi időszak (14. hét) utolsó laborján pótolható még.
* 70%-os részvétel.
**A '''laboralkalmak''' és az '''ellenőrző mérések''' nem pótolhatóak.
** A '''laboralkalmak''' és az '''ellenőrző mérések''' nem pótolhatóak.


=== Félévvégi jegy ===
==== Nagyházi ====
*A félévközi jegy kaphata, ha:
* Kiválasztás a 6. hétig.
**4 legjobb kisZH átlaga legalább 2,00
* A dokumentáció leadása a 8. hétig.
**ellenőrző mérések legalább 2/3 (kb. 70%) sikeres
* Leadás a 13. hétig.
**házi sikeres elfogadtatása
** Ez pótolható a 14. héten.
**laborhiányzás nem haladta meg a 30%-ot
* A laborvezetővel előre egyeztett laboralkalmon be kell mutatni a házit, ki kell próbálni. Leteszteli (akár kérdésekkel), hogy tényleg a hallgató csinálta-e.
 
=== Vizsgafeltételek ===
* A 4 legjobb '''kisZH''' átlaga eléri a kettest.
* A '''nagyházi''' elfogadható.


== Tematika ==
== Tematika ==
Előadások és laborok összefésült témája:
''A számonkéréseken általában csak az itt felsorolt ((kivéve a duplazárójeleseket)) témakörök szerepelnek.''
* bevezetés: típusok, vezérlési szerkezetek, szintaxis alapjai + fejlesztőkörnyezet
* alapok: függvényhívás, tömbök, memóriakezelés
* objektumok, kapcsolataik, kivételkezelés
* öröklés, kései kötés
* polimorfizmus, heterogén kollekció
* kollekció keretrendszer, genericitás
* input-output - fájlkezelés, IO
* szövegfeldolgozás, utility-k
* automatizált tesztelés
TBD


== Segédanyagok ==
=== Előadás ===
*2018 ősz
* [[Media:ooprog_1a_basics_v13_2023-tavasz.pdf | 1. hét]]: bevezetés, alapok (típusok, beolvasás, műveletek, vezérlési szerkezetek, elágazások, ciklusok, tömbök)
**Előadás anyagok:
* [[Media:ooprog_1b_basics_v13_2023-tavasz.pdf | 2. hét]]: metódusok (definiálás, paraméterezés), típus-kompatibilitás, memóriakezelés, lokális változók, tömbök, ''ArrayList'', csomagok, konvenciók, kommentek
***[[Media:Ooprog_2019_ea_01_basics.pdf | 1. hét]]: bevezetés, alapok: típusok, vezérlési szerkezetek, szintaxis alapjai
** A 22. dián a ''"p2[0] = 7;"'' helyesen ''"p2[1] = 7;"''.
***2. hét: alapok: függvényhívás, tömbök, memóriakezelés
* [[Media:ooprog_2_classes_v6_2023-tavasz.pdf | 3. hét]]: osztályok: létrehozás, inicializálás láthatóság, egységbezárás, ''String''
***3. hét: objektumok bevezetése
* [[Media:ooprog_3_associations_v7_2023-tavasz.pdf | 4. hét]]: objektumok és kapcsolataik, kivételkezelés, ''wrapper'' osztályok ((''boxing'')), segédosztályok (''Math'', ''Random'', ''Arrays'')
***4. hét: objektumok és kapcsolataik, kivételkezelés
* [[Media:ooprog_4_inheritance_v8_2023-tavasz.pdf | 5. hét]]: változók, metódusok és kivételek öröklése ((''Liskov Substitution Principle'')); láthatóságok; statikus és dinamikus típusok, virtuális metódusok, metódushívás-szabály, kései kötés; absztrakt osztályok és metódusok
***5. hét: öröklés, kései kötés
* [[Media:ooprog_5_polimorfizmus_v6_0_2023-tavasz.pdf | 6. hét]]: ''static'' változók, polimorfizmus, öröklés (''OCP''), heterogén kollekció, osztálykohézió és -csatolás, ''Object'' osztály, ''boolean equals()''
***6. hét: polimorfizmus, heterogén kollekció
* 7. hét: ''szünet''
***7. hét: kollekció keretrendszer, genericitás
* [[Media:ooprog_6_collection_v4_2023-tavasz.pdf | 8. hét]]: ''interface''+''implements'', ''deep / shallow copy'', ''hash''; kollekciók: áttekintés, ''Interface Collection'', ''Iterator'', ''Set'', ''List'', ''Collections''
***8. hét: input-output
* [[Media:ooprog_7_io_v2_2023-tavasz.pdf | 9. hét]]: ''elmaradt, de videóval pótolva''; genericitás: sablon (''T'') és öröklése; kollekciók: ''SortedSet'', ''Map'', ''SortedMap''; ''for-each''; input-output: ''Reader'' és ''Writer'', ''InputStream(Reader)'' és ''OutputStream(Reader)'', ''File''
***9. hét: szövegfeldolgozás és utility-k
* 10. hét. ''szünet''
***10. hét: automatizált tesztelés
* [[Media:ooprog_8_serial_util_v2_2023-tavasz.pdf | 11. hét]]: (de)szerializálás: ''ObjectOutputStream'' és ''ObjectInputStream'', ''Properties'', ''StringBuffer'' és ''StringBuilder''; ''(Local)Time'', ''(Local)Date'', ''(Gregorian)Calendar''; ''Random'', ''(Strict)Math'', ''BigInteger'', ''BigDecimal''; ''Scanner'', ''enum''; ''varargs''; ''Arrays.asList''; annotációk
***11. hét: elmaradt
* [[Media:ooprog_9_junit_v2-junit4_2023-tavasz.pdf | 12. hét]]: ''JUnit'': ''Fixture''-metódusok (''@BeforeAll'', ''@BeforeEach'', ''@AfterEach'', ''@AfterAll''), ''Assert''-metódusok, eredmények (''Success'', ''Faliure'', ''Error'', ''Ignore''), ''@Ignore'', ''@Parameters'', ''@Suite'', ''@Tag'', ''ExternalResource'', ''design by contract'', ''assert''
***12. hét: komplex objektum orientált példa bemutatás
* 13. hét: ''fakultatív konzultáció''
***13. hét: fakultatív konzultáció
* 14. hét: ''szünet''
***14. hét: fakultatív konzultáció
**Labor anyagok:
***[[Media:Ooprog_2019_lab_01_bev_tasks.pdf | 1. hét]]: Java alapok, Eclipse + [[Media:Ooprog_2019_lab_01_bev_tutorial.pdf | tutoriál]]
***2. hét: Java függvények (metódusok)
***3. hét: Java objektumok
***4. hét: Java objektumok kapcsolatai
***5. hét: Java öröklés
***6. hét: heterogén kollekció
***7. hét: kollekció keretrendszer
***8. hét: filekezelés, IO
***9. hét: szövegfeldolgozás
***10. hét: JUnit
***11. hét: komplex feladat
***12. hét: elmaradt
***13. hét: HF bemutatás
***14. hét: HF bemutatás / pótlás
**Ajánlott irodalom:
***Kövesdán Gábor: Szoftverfejlesztés Java SE platformon (ISBN 978-615-00-2933-7, 2018. 2. magánkiadás)
TBD


== Házi feladat ==
=== Labor ===
A félév során 1 HF van, mely kiválasztását a 6. hétig kell megejteni. A bemutatásra a 13. héten van lehetőség, valamint a 14. héten annak bemutatására és pótlására.
* [[Media:ooprog_1_bev_tasks_20230228.pdf ‎| 1. hét]]: alapok, Eclipse ([[Media:ooprog_1_bev_tutorial_20230228.pdf |tutorial]])
* [[Media:ooprog_2_fuggveny_tasks_20230307.pdf ‎| 2. hét]]: (rekurzív) függvények, ''List'', ''ArrayList''
* [[Media:ooprog_3_objektum_tasks_20230314.pdf ‎| 3. hét]]: '''''1. kisZH''' az 1–2. heti előadások anyagából''; osztályok készítése
* 4. hét: ''szünet''
* [[Media:ooprog_4_asszocaciok_tasks_20230328.pdf ‎| 5. hét]]: '''''2. kisZH''' az 1–3. heti előadások anyagából''; kivételkezelés, osztályok készítése (''setter'', ''getter'', konstruktorok) és azok közötti kapcsolatok létrehozása
* [[Media:ooprog_5_orokles_tasks_20230404.pdf ‎| 6. hét]]: (többszörös) öröklés, láthatóságok, kivételek (öröklés)
* 7. hét: ''szünet''
* [[Media:ooprog_6_heterogen_tasks_20230418.pdf | 8. hét]]: '''''3. kisZH''' az 1–6. heti előadások anyagából''; heterogén kollekció, öröklés, statikus tagok, rekurzív tárolás
* [[Media:Ooprog_7_kollekciok_tasks_20230425.pdf | 9. hét]]: '''''4. kisZH''' az 1–8. heti előadások anyagából''; ''split'', kollekciók, parancsok, ''switch-case'', ''Comparator'', ''iterator''
* [[Media:ooprog_8_io_tasks_20230502.pdf | 10. hét]]: parancsfeldolgozás, ''split'', ''System.getProperty()'', ''listFiles'', ''File'', ''getCanonicalPath()'', ''getParentFile()'', ''delete()'', ''mkdir()'', ''renameTo()'', ''FileInputStream'' és ''FileOutputStream'', ''FileReader'' és ''BufferedReader'', ''Scanner'', ''String.matches()'', ''run arguments'', ''java.util.zip''
* [[Media:ooprog_9_naptar_tasks_20230509.pdf | 11. hét]]: '''''5. kisZH''' az 1–9. heti előadások anyagából''; dátumok: ''LocalDate.now()'', ''plusDays()'' és ''minusDays()'', ''getDayOfMonth()'', ''getDayOfWeek()'', ''getValue()'', ''lengthOfMonth()'', ''LocalDate.parse(String)'', ''LocalTime.parse(String)'', tárolás ''TreeMap''ben; parancsfeldolgozás
* [[Media:ooprog_a_junit_tasks_20230516.pdf | 12. hét]]: '''''6. kisZH''' az 1–10. heti előadások anyagából''; JUnit
* 13. hét: HF-bemutatás
* 14. hét: HF-pótlás


== ZH ==
== Ajánlott irodalom ==
Nincs ZH
* Kövesdán Gábor: Szoftverfejlesztés Java SE platformon (ISBN 978-615-00-2933-7, 2018., 2. magánkiadás)


== Tippek ==
== Tippek ==
TODO
* Érdemes az elején összeszedni a ketteshez szükséges pontszámot (1-2 ZH-ból lehetséges). A vége felé a ZH-k nehézsége exponenciálisan növekszik, és ez nem az a típusú tárgy, hogy "majd az utolsón megszerzem a maradék ''x'' pontot".
 
== Kedvcsináló ==
TODO
 


{{Lábléc_-_Üzemmérnök-informatikus_alapszak}}
{{Lábléc_-_Üzemmérnök-informatikus_alapszak}}