Kihagyás

Mobil- és webes szoftverek - 1. kotlin előadás

Letöltés PDF-ként

Első Android projekt

  • Felhasználói felület → erőforrás állományként van leírva (pl: XML)

  • Kotlin kód → ez írja le a viselkedést, eseményeket

    • kotlin setContentView(R.layout.activity_main) //felület beállítása btnDemo.setOnClickListener { //esemény rendelése a gombhoz tvHello.text = "Demo" };
  • AVD manager → Android virtuális eszközöket kezeli

Projekt felépítése

  • Java mappa → package → MainActivity.kt = ez a kotlin fájlunk
  • res → layout → activiti_main.xml = ez felel a megjelenésért

Kotlin nyelv bevezető

Kotlin-ról röviden

  • egy szigetről kapta a nevét, 2011-ben jelent meg először
  • JetBrains fejleszti, 2017 → hivatalos támogatás Android-ra
  • funkcionális programozást is támogat
  • Java alapú programozási nyelv → JVM byte kódra fordul
  • automatikus konverzió Java-ról Kotlinra meg vissza
  • Null-safety → nem lesz annyi bajunk a NullPointerException-nal
  • könnyel olvasható a kód
  • Tools → Kotlin → Kotlin REPL: Kotlin fordító/futtató, gyors tesztelésre praktikus
  • nem kell pontosvessző a sorok végére

Változók és konstansok

  • Változó létrehozása → var kulcsszó
  • konstans létrehozása → val kulcsszó
    • ha meg akarjuk változtatni, hibát dob
  • nem kell megadni a típust, magától kitalálja

Típusok

  • Minden valójában egy objektum → függvényekkel és lekérhető tulajdonságokkal rendelkeznek
    • pl: var a = 10; a.toString();
  • némely típus futási időben primitív típusként van reprezentálva, de osztálynak látszik
  • Használhatunk alul vonást a számok jobb érthetősége végett: val a = 1_000_000;
  • hexa szám írása: val a = 0xFF, bináris szám írása: val a = 0b11
  • float-ként tárolás: val b = 1.233_333F

Kasztolás (típusok váltása)

  • impilcit kasztolás nem engedélyezett

  • minden típus saját függvényével lehetséges ez

  • kotlin var a: Byte = 4 var b: Int = a.toInt()

Tömbök

  • Sima tömbök

    var myIntArray = intArrayOf(1, 2, 3)
    var myIntArray2 = Array<Int>(3, {it * 1}) //3 eleme legyen, amik a második paraméter szerint számolódnak ki, ahol it = elem indexe
    
    println(Arrays.toString(myIntArray)) //[1, 2, 3]
    println(Arrays.toString(myIntArray)) //[0, 1, 2]
    println(myIntArray[2]) //3 (a tömb 2. eleme 0-tól számozva)
    
  • Vegyes típusokat tartalmazó tömb

    var mixedArray = arrayOf(1, "something")
    println(Arrays.toString(mixedArray)) //[1, something]
    
  • String = karaktertömb

    var someString: String = String(charArrayOf('m', 'y', ' ', 'a', 'b', 'c'))
    var someString2: String = "my abc"
    
  • String minták (template) → $ jellel

    val numOfChar = 10
    print("There are $numOfChar in this word")
    
    val numOfMan = 2
    val numOfWoman = 4
    print("There are ${numOfA + numOfB} people in this room")
    
  • String speciális karakterek

    • \t (tab), \n (új sor),

    • Nyers stringek

      var rawString = """Hello!
          |This is me!
      """.trimMargin() //a trimMargin() letörli a sorok előtt és mögött levő szóközöket
      
  • Stringek összehasonlítása → ==

    var a = "alma"
    var b = "alma"
    println(a == b) //true
    

Műveletek tömbökkel

  • Rendezés, sorrend megkavarása, bináris keresés, stb

    val numbers: ArrayList<Int> = ArrayList()
    numbers.add(4)
    numbers.add(2)
    numbers.add(5)
    numbers.add(7)
    numbers.add(3)
    println("Rendezetlen tömb: $numbers") //[4, 2, 5, 7, 3]
    
    numbers.sort() //sorba rendezi a tömböt pl [2, 3, 4, 5, 7]
    numbers.shuffle() //valami random sorrendbe keveri a tömböt pl [7, 5, 3, 2, 4]
    numbers.reverse() //visszafordítja a tömböt
    Collections.swap(numbers, 0, 1) //megcseréli a numbers tömb 0. és 1. elemét
    
    val newNumbers: ArrayList<Int?> = ArrayList()
    newNumbers.addAll(numbers) //hozzáadja a newNumbers tömb végéhez a numbers összes elemét
    newNumbers.fill(1) //felülírja az összes értéket a megadottal (pl mind 1-es lesz)
    
    val pos = Collections.binarySearch(numbers, 3) //bináris keresés, CSAK RENDEZETT TÖMBÖN MEGY, visszaadja az adott elem pozícióját, ha nincs benne -1et ad vissza
    
    val count = Collections.frequency(numbers, 2) //hányszor tartalmazza az adott számot
    
  • Diszjunkt-ság ellenőrzése → Megmondja, hogy van e közös elem a két tömbben

    val value = Collections.disjoint(numbers, numbers2)
    println("Two lists are disjoint: $value")