java és web programozás
TRANSCRIPT
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
3. El®adás
Kovács Kristóf, Rimay Zoé 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
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
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
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
Példa
I Ez a memóriánk.
Kovács Kristóf, Rimay Zoé 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Ö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