„Kliensalkalmazások” változatai közötti eltérés
→Android: Órák anyagának és segédanyagoknak a hozzáadása |
a →Vizsga: Címsorok rendezése |
||
| 100. sor: | 100. sor: | ||
Az előadásokon és laborokon bemutatott technológiák segítségével egy komplex alkalmazás készítése önálló funkcionalitással. | Az előadásokon és laborokon bemutatott technológiák segítségével egy komplex alkalmazás készítése önálló funkcionalitással. | ||
==Vizsga== | ==Vizsga== | ||
[[Kliensalkalmazások kvíz|Kvíz]] | |||
===Web=== | |||
==== 2023. tavasz ==== | |||
*Mintavizsga | |||
**''Mi az a TypeScript-dekorátor? Milyen szintaktikával használjuk?'' (kifejtős) | |||
***kb. ugyanaz, mint Pythonban | |||
***módosítani lehet vele egy osztályt vagy annak tagjainak működését | |||
***pl.:<syntaxhighlight lang="ts" line="1"> | |||
function logged(originalMethod: any, context: ClassMethodDecoratorContext) { | function logged(originalMethod: any, context: ClassMethodDecoratorContext) { | ||
return (...args: any[]) => { | return (...args: any[]) => { | ||
| 132. sor: | 133. sor: | ||
calculator.add(1, 9); | calculator.add(1, 9); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== 2024. tavasz ==== | |||
*Vizsga | |||
**''Mire való a <code>[https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById getElementById]</code> függvény? Hogyan lehet elérni?'' (kifejtős) | |||
***egy adott ID-jű elem DOM-ban való megtalálására | |||
****így könnyen lehet a JS-kódból módosítani a DOM-ot | |||
***a globális <code>document</code> objektumnak van ilyen tagváltozója, azt kell meghívni a JS-kódban | |||
***pl.:<syntaxhighlight lang="html" line="1"> | |||
<button id="disablerButton"> | <button id="disablerButton"> | ||
Disable the other button | Disable the other button | ||
| 210. sor: | 157. sor: | ||
disablerButton.addEventListener("click", disableButton("buttonToDisable")); | disablerButton.addEventListener("click", disableButton("buttonToDisable")); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
**''Mi a különbség a'' block ''és'' inline ''típusú HTML-elemek között?'' (kifejtős) | |||
***block | |||
****pl.: <code><nowiki><div></nowiki></code>, <code><nowiki><p></nowiki></code> | |||
****a szülőjének teljes szélességét kitölti | |||
****új sorban jelenik meg | |||
***inline | |||
****pl.: <code><a></code>, <code><nowiki><span></nowiki></code> | |||
****nem tölti ki a szülőjének teljes szélességét | |||
****ugyanabban a sorban jelenik meg | |||
*****így lehet formázni linkeket, vagy pl. highlightolni (kihúzni) szöveget | |||
*****csak a tagen belüli szövegre vonatkozik | |||
**''Mire való egy <code>.d.ts</code> kiterjesztésű fájl?'' (kifejtős) | |||
***declaration file | |||
***kizárólag a hozzá tartozó JavaScript-fájl típusinformációit tartalmazza | |||
***gyakorlatilag ugyanaz, mint Pythonban a [https://typing.readthedocs.io/en/latest/source/stubs.html type stub], de a TypeScript fordításidőben jelzi a típusokkal kapcsolatos problémákat (Pythonban ezeket csak az IDE mutatja) | |||
**''Mire szolgál az Angular <code>[https://angular.dev/api/common/NgIf?tab=description ngIf]</code> direktívája?'' (kifejtős) | |||
***elemek feltételes megjelenítésére | |||
*** pl.:<syntaxhighlight lang="ng2" line="1"> | |||
<div *ngIf="train"> | <div *ngIf="train"> | ||
<p> | <p> | ||
| 234. sor: | 181. sor: | ||
</div> | </div> | ||
</syntaxhighlight> | </syntaxhighlight> | ||
***az <code>*ngIf</code> attribútumban található kifejezést értékeli ki | |||
****itt a komponens <code>.ts</code> fájljában található változókra (is) hivatkozhatunk, melyekre adatkötést hoz létre | |||
****ha az értéke <code>true</code>, megjeleníti az elemet | |||
****ha <code>false</code>, törli a teljes elemet | |||
***lehet <code>else</code> ága is | |||
****ha sok if-else ág van, érdemes az <code>[https://angular.dev/api/common/NgSwitch?tab=usage-notes ngSwitch]</code>-et használni helyette | |||
***Android | |||
****''Hogyan tudunk saját stílust definiálni? Hogyan tudjuk ezt a stílust az egész alkalmazásra érvényesíteni?'' (kifejtős) | ===Android=== | ||
==== 2024. tavasz ==== | |||
*A diasorokon szereplő kifejtős kérdések | |||
**9. hét | |||
***Milyen lehetőségeink vannak a fejlesztés közbeni debugolásra? | |||
***Miket kell tartalmaznia a manifestnek? | |||
*** Mit értünk erőforrás-minősítő alatt? | |||
*** Magyarázza el a fordítás mechanizmusát! | |||
*** Mit jelent az obfuszkálás? | |||
***Az Activity callback életciklus-függvények felüldefiniálásakor meg kell-e hívni kötelezően az ősosztály implementációját? Miért? | |||
***Ha <code>A</code> <code>Activity</code>-ről átváltunk a <code>B</code> <code>Activity</code>-re, milyen sorrendben hívódnak meg az életciklusfüggvények? | |||
**10. hét | |||
***Magyarázza el az <code>Activity</code> back stack működési elvét! | |||
***Hogyan kell egy <code>Activity</code>-t indítani, ha vissza akarunk kapni adatot tőle? | |||
***Hogyan működik az implicit <code>Intent</code>? | |||
*** Mit értünk ''sűrűségfüggetlen pixel'' alatt? | |||
***Egy 320 dpi-s képernyőn <code>1.dp</code> hány darab pixelnek felel meg? | |||
***Sorolja fel a legfontosabb androidos layoutokat! | |||
***Hogyan támogatja az Android a lokalizációt? | |||
**11. hét | |||
***Mi a <code>LayoutInflater</code> feladata? | |||
***Hogyan lehet elkészíteni és kezelni egy menüt? | |||
***Hogyan adható meg, hogy egy stílus az egész alkalmazásra érvényes legyen? | |||
**12. hét | |||
***Mire használhatók a <code>Fragment</code>-ek? | |||
***Hogyan csatolhatók a <code>Fragment</code>-ek? | |||
***Hogyan kommunikálhatnak a <code>Fragment</code>-ek egymással? | |||
***Mire jó a <code>RecyclerView</code>? Mik az előnyei? | |||
***Milyen adattárolási lehetőségeket ismer? | |||
***Mire használható a <code>SharedPreferences</code>? | |||
***Hogyan támogatja az Android az adatok adatbázisban tárolását? | |||
***Sorolja fel az ORM alapelveit! | |||
***Milyen lehetőségek vannak a fájlrendszerben való adattárolásra? | |||
***Mire jó egy content provider? | |||
***Milyen formában adja vissza az adatokat egy content provider? | |||
**13. hét | |||
***Mik a Jetpack Compose használatának előnyei? | |||
***Milyen Jetpack Compose layoutokat ismer? Jellemezze őket! | |||
***Mik a Jetpack Compose alapelvei? | |||
***Miért hatékony módszer a recomposition? | |||
***Vázolja fel, milyen Jetpack Compose-architektúrákat ismer! | |||
***Mire használható a lazy loading? | |||
***Mik azok a coroutine-ok? | |||
***Mire való a flow, és hogyan használjuk? | |||
**14. hét | |||
***Milyen rövidtávú kommunikációs technológiákat ismer? | |||
***Milyen hosszútávú kommunikációs technológiákat ismer? | |||
***Mi a különbség az UDP és a TCP/IP között? | |||
*** Hogyan kell végezni a hálózati kommunikációt? | |||
***Mire szolgál a Retrofit library? | |||
***Milyen módszereket ismer a <code>BroadcastReceiver</code>-ek regisztrálására? | |||
*** Hogyan biztosítható, hogy egy bizonyos típusú broadcastot megkapjon a komponensünk? | |||
***Milyen típusú <code>Service</code>-eket ismer? | |||
***Mire kell nagyon figyelni egy <code>Service</code> írásakor? | |||
***Milyen engedélykategóriákat ismer? | |||
***Milyen fázisai vannak a veszélyes engedélyek kérésének? | |||
*Vizsga | |||
** ''Hogyan tudunk saját stílust definiálni? Hogyan tudjuk ezt a stílust az egész alkalmazásra érvényesíteni?'' (kifejtős) | |||
***View | |||
****Saját stílust a <code>res/values/styles.xml</code> fájlban egy <code><style></code> tag, majd ez alatt további <code><item></code> tagek hozzáadásával lehet definiálni. | |||
****A manifest fájl <code><application></code> tagjébe kell felvenni egy <code>android:theme</code> attribútumként, pl. így: <code><application android:theme="@style/CustomStyle"></code>. | |||
***Jetpack Compose | |||
****Saját stílust egy <code>@Composable</code> függvény (pl. <code>MyTheme</code>) létrehozásával lehet definiálni, melyben pl. a <code>MaterialTheme</code> függvényt az általunk választott paraméterekkel hívjuk meg. | |||
****A <code>MainActivity</code> class <code>setContent</code> függvényében az <code>App</code> függvény hívását a <code>MyTheme</code> függvény hívásába kell ágyazni. | |||
**''Mire és hogyan használható egy flow?'' (kifejtős) | |||
***A flow egy Python generatorhoz vagy egy Java Streamhez hasonló változótípus. | |||
****Egy Python generatorhoz hasonlóan több visszatérési értéke is lehet. | |||
****Egy Java Streamhez hasonlóan lehet mapelni vagy filterezni. | |||
***Segítségével pl. fel lehet iratkozni egy adatfolyamra, hogy onnan folyamatosan kapjunk frissítéseket. | |||
***A <code>Flow<></code> típusú változó <code>.collect { }</code> függvényét meghívva egy lambda kifejezést lehet végrehajtani a kapott értékkel. | |||
** ''Vázolja fel a képen látható nézet kódját Jetpack Compose segítségével! A kódnak nem kell tökéletesnek és teljesnek lennie, de a lényegi részek szerepeljenek benne.'' (kódolós) A képen egy képernyő, melynek közepén teljes szélességben egy ''Email'' feliratú szövegmező látható, alatta egy ''Password'' feliratúval. Mindkét szövegmezőbe ugyanazon látható szöveg van beírva. Alattuk pedig egy ''Login'' gomb látható, szintén a képernyő teljes szélességében. | |||
***<syntaxhighlight lang="kotlin" line="1"> | |||
@Composable | @Composable | ||
fun loginPage( | fun loginPage( | ||
| 279. sor: | 284. sor: | ||
} | } | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{Lábléc_-_Üzemmérnök-informatikus_alapszak}} | {{Lábléc_-_Üzemmérnök-informatikus_alapszak}} | ||