java és web programozás

26

Upload: others

Post on 31-Oct-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java és web programozás

Java és web programozás

Kovács Kristóf, Rimay Zoé

Budapesti M¶szaki Egyetem

2013. szeptember 25.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 2: Java és web programozás

3. El®adás

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 3: Java és web programozás

User

public class User {

private String realName_;

private String nickName_;

private String password_;

public User(String realName, String nickName) {

realName_ = realName;

nickName_ = nickName;

}

public User(String realName,

String nickName, String password) {

realName_ = realName;

nickName_ = nickName;

password_ = password;

}

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 4: Java és web programozás

public boolean passwordCheck(String enteredPassword) {

if (password_.equals(enteredPassword)) {

return true;

}

return false;

}

public void setNickName(String newNickName) {

nickName_ = newNickName;

}

}

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 5: Java és web programozás

Memória kép

I Az el®bbi User osztály is elhelyezkedik valahol a memóriában.Rá úgy kell tekinteni mint egy mintára amib®l lehet készíteniUser objektumokat.

I Amikor létrehozunk (konstruálunk) egy User objektumot akkorhasználnunk kell az egyik konstruktorát.

I A java el®ször lefoglalja a memóriában a helyet azobjektumnak. Majd lefuttatja a konstruktort amivel aobjektum adattagjai kezd®értéket kapnak.

I Amikor csak deklarálunk egy nem primitív változót ahhoz nemtartozik semmilyen tárolt objektum egészen addig amíg nemfoglalunk le egyet és adjuk neki értékül.

I Minden változóra úgy kellene tekinteni, mintha pointereklennének.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 6: Java és web programozás

Memória kép

I Az el®bbi User osztály is elhelyezkedik valahol a memóriában.Rá úgy kell tekinteni mint egy mintára amib®l lehet készíteniUser objektumokat.

I Amikor létrehozunk (konstruálunk) egy User objektumot akkorhasználnunk kell az egyik konstruktorát.

I A java el®ször lefoglalja a memóriában a helyet azobjektumnak. Majd lefuttatja a konstruktort amivel aobjektum adattagjai kezd®értéket kapnak.

I Amikor csak deklarálunk egy nem primitív változót ahhoz nemtartozik semmilyen tárolt objektum egészen addig amíg nemfoglalunk le egyet és adjuk neki értékül.

I Minden változóra úgy kellene tekinteni, mintha pointereklennének.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 7: Java és web programozás

Példa

I Ez a memóriánk.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 8: Java és web programozás

Példa

User user1;

I Létrehoztuk a user1 változót

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 9: Java és web programozás

Példa

User user1;

new User("kutya", "morzsi");

I Létrehoztunk egy User objektumot

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 10: Java és web programozás

Példa

User user1;

new User("kutya", "morzsi");

I Ennek lefutott a konstruktora így az adattagjainak van értéke

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 11: Java és web programozás

Példa

User user1;

user1 = new User("kutya", "morzsi");

I Hozzarendeltük a változóhoz az objektumot

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 12: Java és web programozás

Példa

User user1;

user1 = new User("kutya", "morzsi");

user1 = new User("macska", "ficur");

I Létrehoztunk egy új objektumot és a user1-hez rendeltük

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 13: Java és web programozás

Példa

User user1;

user1 = new User("kutya", "morzsi");

user1 = new User("macska", "ficur");

I Mi lesz most az eredeti objektumunkkal?

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 14: Java és web programozás

Példa

User user1;

user1 = new User("kutya", "morzsi");

user1 = new User("macska", "ficur");

I Valamikor jön majd a garbage collector és felszabadítja

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 15: Java és web programozás

Példa

User user1;

User user2 = new User("kutya", "morzsi");

user1 = new User("macska", "ficur");

I Két objektumot össze szeretnénk hasonlítani

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 16: Java és web programozás

Példa

User user1;

User user2 = new User("kutya", "morzsi");

user1 = new User("macska", "ficur");

user1 == user2;

I Így a user változók hasonlítódnak össze, azaz az derül ki, hogyugyanarra az objektumra mutatnak-e.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 17: Java és web programozás

Példa

User user1;

User user2 = new User("kutya", "morzsi");

user1 = new User("macska", "ficur");

user1.equals(user2);

I Így már valóban az objektumok hasonlítódnak össze.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 18: Java és web programozás

Garbage collector

I Mint majdnem minden programnyelvben itt is igaz az, hogyegy blokkban létrehozott változó csak a blokkon belül létezik.

I Az objektumokra ez nem igaz, a memóriában maradnak azutánis, hogy vége egy blokknak.

I Viszont, ha beindult a garbage collector és talál olyanobjektumot amire nincs hivatkozás. Azaz sehonnan nem lehetelérni (mint az el®z® példában). Akkor felszabadítja.

I A garbage collector nem folyamatosan m¶ködik, hanembizonyos id®pillanatokban elindul.

I Rá lehet kényszeríteni a javat, hogy indítsa el a garbagecollectort.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 19: Java és web programozás

Garbage collector

I Mint majdnem minden programnyelvben itt is igaz az, hogyegy blokkban létrehozott változó csak a blokkon belül létezik.

I Az objektumokra ez nem igaz, a memóriában maradnak azutánis, hogy vége egy blokknak.

I Viszont, ha beindult a garbage collector és talál olyanobjektumot amire nincs hivatkozás. Azaz sehonnan nem lehetelérni (mint az el®z® példában). Akkor felszabadítja.

I A garbage collector nem folyamatosan m¶ködik, hanembizonyos id®pillanatokban elindul.

I Rá lehet kényszeríteni a javat, hogy indítsa el a garbagecollectort.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 20: Java és web programozás

Statikus adattagok / metódusok

I A statikus adattagok az osztályhoz tartoznak és nem azobjektumokhoz.

I Ez azt is jelenti, hogy ha valami statikus már akkor létezik,amikor még egy objektumot se hoztunk létre az adottosztályból.

I Ezért kell a main függvényeknek mindig statikusnak lenniük,mert ®ket anélkül kell tudnunk meghívni, hogy létrehoztunkvolna objektumot.

I Statikus adattagból nem jön létre több ha létrehozunk egy újobjektumot, hisz az osztályhoz tartozik. Így egy bizonyosstatikus adattagból mindig csak egy van.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 21: Java és web programozás

Statikus adattagok / metódusok

I A statikus adattagok az osztályhoz tartoznak és nem azobjektumokhoz.

I Ez azt is jelenti, hogy ha valami statikus már akkor létezik,amikor még egy objektumot se hoztunk létre az adottosztályból.

I Ezért kell a main függvényeknek mindig statikusnak lenniük,mert ®ket anélkül kell tudnunk meghívni, hogy létrehoztunkvolna objektumot.

I Statikus adattagból nem jön létre több ha létrehozunk egy újobjektumot, hisz az osztályhoz tartozik. Így egy bizonyosstatikus adattagból mindig csak egy van.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 22: Java és web programozás

Példa statikus adattagra

public class Pelda {

public static int szamlalo = 0;

public Pelda() {

Pelda.szamlalo++;

}

public static void main(String[] args) {

Pelda pelda1 = new Pelda();

Pelda pelda2 = new Pelda();

Pelda pelda3 = new Pelda();

Pelda pelda4 = new Pelda();

System.out.println(Pelda.szamlalo); // 4

}

}

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 23: Java és web programozás

Static

I Láthatjátok, hogy a statikus adattagokat nem az objektumonkeresztül (this) érjük el, hanem az osztalyon keresztük.

I Statikus adattagok használat nem ajánlott nagyobbprojectekben ahol esetleg megjelenik a párhuzamosítás.

I Amire viszont mindig hasznos, hogy konstansokat de�niáljatok.

I public static �nal �oat pi = 3.14;

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 24: Java és web programozás

Static

I Láthatjátok, hogy a statikus adattagokat nem az objektumonkeresztül (this) érjük el, hanem az osztalyon keresztük.

I Statikus adattagok használat nem ajánlott nagyobbprojectekben ahol esetleg megjelenik a párhuzamosítás.

I Amire viszont mindig hasznos, hogy konstansokat de�niáljatok.

I public static �nal �oat pi = 3.14;

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 25: Java és web programozás

Konstansok

I A konstansok megváltoztathatatlanok, azonnal értéket kellnekik adni és ezután értekadás jobb oldalán szerepelhet csak.

I Bármilyen változót lehet konstansnak de�niálni.

I Metódus is lehet konstans (�nal). Ekkor az adott metódusmódosíthatatlan. Ilyenr®l jelenleg még nem tanultunk, de akés®bbiekben el® fog jönni.

Kovács Kristóf, Rimay Zoé Java és web programozás

Page 26: Java és web programozás

Összefoglalás

I Változó és objektum két külön életet él.

I Emiatt sokszor nem egyértelm¶ egy m¶velet eredménye.Érdemes mindig pointerekkel gondolkodni, ekkor átláthatóbblesz.

I Statikus dolgok az osztályhoz tartoznak és nem azobjektumhoz.

I Statikus függvények meghívhatók objektum létrehozása nélkül.Ez azt is jelenti, hogy statikus objektumokban a this

kulcsszónak nincs értelme.

I Konstansokat de�niálhattok a �nal kulcsszóval.

Kovács Kristóf, Rimay Zoé Java és web programozás