MOBIL UYGULAMA GELIŞTIRME PELIN YILDIRIM FATMA BOZYIĞIT YZM 3214 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Bu Derste Java Programlama (Crash Course) Class, Nesne, Metodlar, Overloading, Overriding Kalıtım, Ebevyn, Çocuk Class Polymorphism, Exceptions 2
Metodlar Kodu organize etmekte kullanılırlar. Kodu tekrar etmek yerine metod yazıp çağırabiliriz. Kod parçasına erişim hakları ile kontrol edebiliriz. public int length() { int numberofcharacters = 0; // code to calculate the number of characters... return numberofcharacters; Eğer çağırdığımız bir metod veri döndürüyorsa bunu başka bir değişkene saklarız: String sampletext = "Java is fun"; int textlength = sampletext.length(); 3
Nesneler (Object) & Sınıflar (Class) Nesneler: Hayattaki objeler iki karakteristik sergilerler: durum and davranış. Örneğin, bir arabanın durumları (model, marka, renk) ve davranışı (sürme, vites değiştirme) Sınıflar: Nesnelerin meydana getirildiği prototiplerdir. Classlar hayattaki gerçek nesneleri modellemize yararlar. 4
Sınıf Nasıl Tanımlanır.. class Vehicle { int speed = 0; int gear = 1; void changegear(int newgear) { gear = newgear; void speedup(int increment) { speed = speed + increment; void printstates() { System.out.println(" speed:" + speed + " gear:" + gear); 5
Kurucular (Constructors) Sınıftan bır nesne yaratmakta kullanılırlar. Sınıf ile aynı isme sahiptirler Bitiminde geriye (çağıran yere) bir değer döndürmezler Genelde nesnenin değişkenlerine (attributes) ilk değer vermekte kullanılırlar Kurucu tanımlamazsak derleyici varsayım (default) kurucu (parametresiz kurucu) tanımlar. Farklı parametrelerle istediğimiz kadar tanımlayabiliriz public Vehicle(int s, int g){ speed = s; gear = g; Kullanılışı: new Vehicle(100, 5); Default kurucu kullanılışı: new Vehicle(); //default kurucu 6
Getter & Setter Metodları Getters ve setters metodları ile nesnelerin durumları kontrol edilir, güncellenir, okunur. class Vehicle { int speed = 0; int gear = 1; public int getspeed() { return speed; public void setspeed(int s) { speed = s; public int getgear() { return gear; public void setgear(int g) { gear = g; 7
Kalıtım (Inheritance) Kalıtım, kod tekrar kullanımı ve organizesi için doğal ve güçlü bir mekanizma sağlar. iki nesne arasında ebeveyn - çocuk ilişkisi kurmayı sağlar. Nesneye dayalı programlama çok kullanılan bazı metod ve durumların ortak kullanılmasını sağlar. Örneğin, araç, kamyon ve arabanın ebevyn classı olarak tanımlanabilir. Ya da canlılar bir sınıf olarak tanımlanıp, bitkiler, hayvanlar, insanlar çocuk sınıf olarak tanımlanabilir. Javada, her sınıfın sadece 1 direkt ebeveyn sınıfı olabilir. Her ebeveynin sınırsız sayıda çocuk sınıfı olabilir. 8
Nasıl Kalıtım Sağlanır - Ebevyn ve Çocuk public class Car extends Vehicle { int numofseats; //Set of statements defining //a car s state and behavior public class Truck extends Vehicle { public int loadweight; //Set of statements defining //a truck s state and behavior 9
Kalıtım (Inheritance) - Örnek Kalıtım Ağacı Kalıtım ağacında yukarıya doğru çıkıldıkça genele, aşağıya doğru inildikçe özele gidilir. 10
this ve super this: Nesnenin kendisine erişmek için kullanılır. super: ebevyn nesnenin metod ve değişkenlerine erişmek için kullanılır. Özellikle ebevy classın metoduna override edilen bir metod içinden erişmek için kullanılır. Örneğin, Car classında, printstates() override edip ebevyn Vehicleiın printstates() metoduna kullanmak için: public class Car extends Vehicle { int numofseats; void printstates() { super.printstates(); System.out.println(" Number of Seats:" + numofseat); 11
Erişim Düzenleyiciler (Access Modifiers) Bir classın diğer bir classın method ve değişkenlerine erişim izinlerini kontrol için kullanılır. 4 çeşit erişim kontrolu vardır: Sınıf (class) seviyesinde public, or default (belirtilmemişse). public: classı herkes görebilir, erişebilir default: aynı pakette olan diğer classlar erişebilir Değişkenler seviyesinde public, private, protected, or default (belirtilmemişse). public: değişkeni herkes görebilir, erişebilir default: aynı pakette olan diğer classlar erişebilir private: Değişkenlere sadece kendi class ı içinden erişilebilir protected: Değişkenlere kendi paketi içinden yada alt classları içinden erişilebilir 12
Access Modifiers 13
Method Overriding (Üstüne Yazma, Geçersiz Kılma) and Overloading ( Aşırı Yükleme ) Metod overloading: Aynı isimli fakat farklı sayı yada tipte parametreleri olan metodlar tanımlamaya denir. Metod overriding: Çocuk class bir metodu kendisi için tekrar tanımlarsa overriding olur. Örnekler: http://www.tutorialspoint.com/javaexamples/java_methods.htm 14
Overloading Örneği - 1 class MyClass { int height; MyClass(int i) { System.out.println("Building new House that is + i + " feet tall ); height = i; void info() { System.out.println("House is " + height + " feet tall"); void info(string s) { System.out.println(s + ": House is + height + " feet tall"); public class MainClass { public static void main(string[] args) { MyClass t = new MyClass(0); t.info(); t.info("overloaded method"); 15
Overloading Örneği - 2 public class MainClass { public static void printarray(integer[] inputarray) { for (Integer element : inputarray){ System.out.printf("%s ", element); System.out.println(); public static void printarray(double[] inputarray) { for (Double element : inputarray){ System.out.printf("%s ", element); System.out.println(); public static void printarray(character[] inputarray) { for (Character element : inputarray){ System.out.printf("%s ", element); System.out.println(); public static void main(string args[]) { Integer[] integerarray = { 1, 2, 3, 4, 5, 6 ; Double[] doublearray = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 ; Character[] characterarray = { 'H', 'E', 'L', 'L', 'O' ; System.out.println("Array integerarray contains:"); printarray(integerarray); System.out.println("\nArray doublearray contains:"); printarray(doublearray); System.out.println("\nArray characterarray contains:"); printarray(characterarray); 16
Polymorphism - 1 Polimorfizm aynı ebeveyn classın çocuklarının farklı davranış gösterebilmesi fakat aynı zamanda bazı davranışlarda ise aynı davranmasıdır. Örneğin ebeveyn class Vehicle da aşağıdaki gibi bir metod olsun. Bu metod Vehicle ile ilgili bütün bilgileri yazsın: public void showinfo() { System.out.println("The vehicle has a speed of: " + this.speed + " and at gear " + this.gear); 17
Polymorphism - 2 Eğer Truck alt classı bu metodu kullanırsa kendine has değişkeni olan loadweight ekrana yazılmayacak çünkü ebevyn class da bu değişken yok.bunun için, showinfo() metodunu şöyle override ediyoruz: public void showinfo() { super.showinfo(); System.out.println("The truck has is carrying a load of: + this.loadweight); Benzer bir showinfo metodunu Car classı için de tanımlayabiliriz: public void showinfo() { super.showinfo(); System.out.println("The car has "+ this.numofseats + " seats."); 18
Polymorphism - 3 class TestPolymorhism { public static void main(string[] args) { Vehicle vehicle1, vehicle2, vehicle3; vehicle1 = new Vehicle(50,2); vehicle2 = new Car(50,2,4); vehicle3 = new Truck(40,2,500); System.out.println("Vehicle 1 info:"); vehicle1.showinfo(); System.out.println("\nVehicle 2 info:"); vehicle2.showinfo(); System.out.println("\nVehicle 3 info:"); vehicle3.showinfo(); 19
Exceptions (Aykırı Durumlar) - 1 Bir hata oluştuğunda JRE exception isimli bir nesneyi oluşturur ve bu nesne içinde temel hata bilgileri (hatanın tipi, yeri, hangi metodların çağrıldığının listesi). Bu şekilde exception oluşturulmasına throwing an exception denir. try { System.out.println("Entered try statement"); String partialstring = nullstring.substring(1); // Execution will break before reaching this line System.out.println("Partial string is: " + partialstring); catch (Exception e) { System.out.println("Error occured: "+e.getmessage()); e.printstacktrace(); finally { System.out.println("This line of code will always run!"); 20
Kaynaklar http://www.yildiz.edu.tr/~smyavuz/java/java.pdf http://androidatc.com/adnan/upload/editor_upload/file/selfstudy/java%20fundamentals% 20for%20Android%20Development_Self%20Study%20Guide.pdf http://blog.teamtreehouse.com/java-basics-for-android-development-part-1 http://blog.teamtreehouse.com/java-basics-for-android-development-part-2 http://code.tutsplus.com/tutorials/learn-java-for-android-development-introduction-to-java-- mobile-2604 http://code.tutsplus.com/tutorials/learn-java--mobile-2612 https://www.udacity.com/course/viewer#!/c-ud853/l-1395568821 http://web.cs.hacettepe.edu.tr/~bbm102/misc/java_notes_by_oa.pdf 21