Skip to content

Latest commit

 

History

History
593 lines (513 loc) · 20.6 KB

oo-workshop.md

File metadata and controls

593 lines (513 loc) · 20.6 KB

Objektum orientált programozás

Programozás alapok

Házi feladat ellenőrzés

  • Mit jelent, hogy programozási nyelv?
  • Milyen programozási nyelv a Java?
  • Mi kell ahhoz, hogy megírjunk egy programot?
  • Mi egy utasítás?
  • Mi egy változó?
  • Mi a változó deklarálás/definiálás?
  • Mi a változó értékadás?
  • Milyen típusú változókat ismersz?
  • Mi az operátor?
  • Milyen operátorokat ismersz?
  • Mit jelent a Hello World! alkalmazás?
  • Mit jelent a String összefűzés?
  • Mi egy blokk?
  • Mi egy feltételes utasítás?
  • Mi egy for-ciklus utasítás?
  • Mi egy while-ciklus utasítás?
  • Mi egy do-ciklus utasítás?
  • Mi egy switch utasítás?
  • Hogyan kérhetsz be adatot a konzolon?
  • ArrayLists
    • Object
    • hozzáadás és törlés
    • létrehozás
    • .add() (következő helyre vagy specifikus helyre)
    • .addAll()
    • .remove() (index vagy érték alapján)
    • .set()
    • .size()
    • .isEmpty()
    • .clear()
    • keresés: .contains(), .containsAll()
    • elemek listák között (másolás .toArray(), .addAll())
    • szöveges megjelenítés .toString()
  • String
    • .length()
    • .substring()
    • .replace()
    • .charAt()
    • .equals()
    • .compareTo()
    • .toLowerCase()
    • .contains()
    • .endsWith()
    • .startsWith()
    • .indexOf()
    • .lastIndexOf()
    • .split()
  • Függvények
    • újrafelhasználhatóság
    • kód dupklikáció eltüntetése
    • absztrakció, parametrizálás
    • void vagy visszatérési érték
    • olvashatóság
    • belső változók
    • paraméterek
  • Debugolás
    • breakpoint
    • step over
    • watches
    • evaluate expression

Feladatok

Feladat 1

Mutasd be magad változók segítségével! Hozz létre három változót egyet a nevednek, egyet a korodnak és egyet a kedvenc gyümölcsödnek. Írd ki a konzolra a következőket a változók használatával:

Sziasztok, Ádám vagyok 30 éves!
A kedvenc gyümölcsöm a dinnye.

Feladat 2

Készíts programot, amely a konzolon bekér a felhasználótól két egész számot. Az első a farmer csirkéinek száma, a második pedig a farmer malacainak a száma. Ezután a program kiírja, hogy a farmer összes állatának mennyi lába van.

Csirkek szama:
5
Malacok szama:
3
Labak osszesen: 22

Feladat 3

Készíts programot, amely bekér egy egész számot a felhasználótól, majd kiírja a szorzótáblát 1-10-ig:

Mi legyen a szam?
15
1 * 15 = 15
2 * 15 = 30
3 * 15 = 45
4 * 15 = 60
5 * 15 = 75
6 * 15 = 90
7 * 15 = 105
8 * 15 = 120
9 * 15 = 135
10 * 15 = 150

Feladat 4

Készíts programot, amely bekér egy egész számot, majd "kirajzol" egy annyi soros háromszöget csillagokból:

Mennyi sor legyen?
4
*
**
***
****

Feladat 5

  • Készíts egy üres listát, amely neveket (stringeket) fog tartalmazni
  • Írd ki a konzolra, hogy jelenleg mennyi eleme van a listának
  • Add a listához Jánost
  • Írd ki a konzolra, hogy a lista üres vagy nem üres
  • Add a listához Vilmost
  • Add a listához Amandát
  • Írd ki a konzolra, hogy jelenleg mennyi eleme van a listának
  • Írd ki a konzolra a lista harmadik elemét
  • Menj végig a listán és írd ki mindegyik nevet
János
Vilmos
Amanda
  • Menj végig a listán és írd ki a neveket egy sorszámmal
1. János
2. Vilmos
3. Amanda
  • Töröld a második elemet (Vilmost)
  • Menj végig a listán visszafelé és írd ki a neveket
Amanda
János
  • Töröld az összes elemet

Feladat 6

  • Készíts egy gyümölcs listát az alábbi elemekkel, legyen a neve gyumik
Alma, Dinnye, Körte, Málna, Szilva
  • Készíts egy másik listát masik néven, a gyümik lista összes elemével
  • Írd ki a konzolra, hogy a gyümik tartalmaz-e Málnát vagy nem
  • Töröld ki a Málnát a másik listából
  • Add hozzá a Kiwit a gyümik listához a Dinnye után
  • Hasonlítsd össze a gyümik és a másik lista méretét
  • Írd ki a konzolra az Alma index-ét a gyümik listában
  • Írd ki a Málna index-ét a másik listában
  • Add hozzá a másik listához a Licsit és a Pomelót egy utasítással
  • Írd ki a gyümik harmadik elemét

Feladat 7

  • Create a string variable named typo and assign the value Chinchill to it
  • Készíts egy hianyos nevű változót, add meg neki a Csincsill értéket
  • Készíts egy hozzafuzA függvényt, amely egy string paraméterrel rendelkezik és hozzáfűz egy "a" betűt a paraméterben kapott string-hez és visszatér vele
  • Írd ki a konzolra hozzafuzA(hianyos) eredményét

Feladat 8

Az anagramma a szójátékok egy fajtája, melyben értelmes szavak vagy mondatok betűinek sorrendjét úgy változtatjuk meg, hogy az eredmény szintén értelmes szó vagy mondat legyen. Sok anagramma esetén az eredeti és a végeredmény között humoros vagy egyéb kapcsolat van, ez növeli az anagramma érdekességét, értékét. bővebben a Wikipédián

  • Készíts egy függvényt anagrammak néven, amely a két input paramétereről eldönti, hogy egymás anagrammái-e és visszatér egy boolean értékkel:
input 1 input 2 output
"gyomorrontas" "toronymorgas" true
"green" "fox" false

Objektum orientált programozás

Házi feladat ellenőrzés

  • Mi az OOP?
  • Vannak más paradigmák is?
  • Az OOP a legjobb?
  • Mi az az osztály?
  • Mi a konstruktor?
  • Mire jó a this kulcsszó?
  • Mi a különbség az osztály és egy példány között?
  • Mik az osztályváltozók, attribútumok?
  • Mik a metódusok?
  • Mire jó a private és public?
  • Mit jelent egységbezárás/borítékolás?
  • Hogyan jelenik meg az Kizárólagos Felelősség Elve az OOP-ban?
  • Mit jelent az osztályváltozó?
  • Mit jelent a static kulcsszó?
  • Hogyan használhatok más fájlokban található osztályokat?
  • Mi az a package vagy namespace?
  • Miért használunk package-eket?
  • Mi az az öröklődés?
  • Mi az ősosztály?
  • Mi a származtatott osztály?
  • Mi a különbség az ez-is-egy és a van-neki kapcsolat között?
  • Miért hasznos az öröklődés?
  • Mire lehet használni a super kulcsszót?
  • Mik a hozzáférés módosítók?
  • Mit jelent a polimorfizmus?
  • Mikor kell használni az @Override annotációt vagy override kulcsszót?
  • Mi a különbség override és overload között?
  • Hogyan lehet biztoságosan kasztolni?
  • Mi a különbség az explicit és implicit kasztolás között?
  • Mire jó a final vagy readonly kulcsszó?

Feladatok

Feladat 9

Készítés egy PosztIt osztályt, amelynek van 3 osztályváltozója:

  • hatterSzin
  • szoveg ami rajta van
  • szovegSzin Készíts pár példa objektumot:
  • sárga posztit kék szöveggel: "Első ötlet"
  • rózsaszínű posztit fekete szöveggel: "Hurrá!"
  • zöld posztit barna szöveggel: "Szuper!"

Feladat 10

  • Készíts egy Allat osztályt
  • Minden állatnak van éhsége, ami egy egész szám
  • Minden állatnak van szomja, ami egy egész szám
  • Amikor egy állat létrejön 50-es az éhsége és 50-es a szomja
  • Minden állat tud csinálni dolgokat:
    • eszik() az éhsége csökken eggyel
    • iszik() a szomja csökken eggyel
    • jatszik() az éhsége és szomja növekszik eggyel

Feladat 11

Másold magadhoz az elkészített Pokemon osztályt:

Java
public class Pokemon {
    String nev;
    String tipus;
    String ellenfel;

    public Pokemon(String nev, String tipus, String ellenfel) {
        this.nev = nev;
        this.tipus = tipus;
        this.ellenfel = ellenfel;
    }

    boolean hatasosEllene(Pokemon masik) {
        return this.ellenfel.equals(masik.tipus);
    }
}
C#
public class Pokemon {
    string nev;
    string tipus;
    string ellenfel;

    public Pokemon(string nev, string tipus, string ellenfel) {
        this.nev = nev;
        this.tipus = tipus;
        this.ellenfel = ellenfel;
    }

    bool hatasosEllene(Pokemon masik) {
        return this.ellenfel.Equals(masik.tipus);
    }
}

Illetve használd ezen osztály main metódusát, benne kommentként láthatod a feladatot:

Java
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Pokemon> ashPokemonjai = initializePokemons();

        // Minden pokémonnak van neve és típusa.
        // Bizonyos tipusok hatásosak más típusokkal szemben, pl. víz hatásos tűz ellen.

        // Ash-nek van néhány pokémonja.
        // Felbukkant egy vad pokémon!

        Pokemon vadPokemon = new Pokemon("Oddish", "fű", "víz");

        // Melyik pokémonját válassza Ash a küzdelemhez?

        System.out.print("..., téged választalak!");
    }

    private static List<Pokemon> initializePokemons() {
        List<Pokemon> pokemon = new ArrayList<>();

        pokemon.add(new Pokemon("Balbasaur", "fű", "víz"));
        pokemon.add(new Pokemon("Pikatchu", "elektromos", "víz"));
        pokemon.add(new Pokemon("Charizard", "tűz", "fű"));
        pokemon.add(new Pokemon("Balbasaur", "víz", "tűz"));
        pokemon.add(new Pokemon("Kingler", "víz", "tűz"));

        return pokemon;
    }
}
C#
using System;
using System.Collections.Generic;

public class Main
{
    public static void Main(string[] args)
    {
        List<Pokemon> ashPokemonjai = initializePokemons();

        // Minden pokémonnak van neve és típusa.
        // Bizonyos tipusok hatásosak más típusokkal szemben, pl. víz hatásos tűz ellen.

        // Ash-nek van néhány pokémonja.
        // Felbukkant egy vad pokémon!

        Pokemon vadPokemon = new Pokemon("Oddish", "fű", "víz");

        // Melyik pokémonját válassza Ash a küzdelemhez?

        Console.WriteLine("..., téged választalak!");
    }

    private static List<Pokemon> initializePokemons()
    {
        List<Pokemon> pokemon = new List<Pokemon>();

        pokemon.Add(new Pokemon("Balbasaur", "fű", "víz"));
        pokemon.Add(new Pokemon("Pikatchu", "elektromos", "víz"));
        pokemon.Add(new Pokemon("Charizard", "tűz", "fű"));
        pokemon.Add(new Pokemon("Balbasaur", "víz", "tűz"));
        pokemon.Add(new Pokemon("Kingler", "víz", "tűz"));

        return pokemon;
    }
}

Feladat 12

A feladat egy iskola adminsztrációjához szükséges alkalmazás készítése, ehhez több osztály létrehozása. Tovább a feladathoz

Feladat 13

A feladat egy növénykert nyilvántartásához szükséges alkalmazás készítése, több osztály létrehozása. Tovább a feladathoz