CENG 217 Object Oriented Design. Doç. Dr. Halûk Gümüşkaya /
|
|
- Eren Gulden
- 8 yıl önce
- İzleme sayısı:
Transkript
1 CENG 217 Object Oriented Design Lecture 5 Doç. Dr. Halûk Gümüşkaya haluk@gumuskaya.com / haluk@fatih.edu.tr Computing Engineering Department Fatih University Friday, December 09,
2 Modeller ve GUI Programlama 2
3 Dersin Anahatları 1. Model olarak Döngüler (Iterator) 2. Model Konsepti 3. Gözleyici (Observer) Modeli 4. Yapımodeli Yöneticileri (Layout Managers) ve Strateji (STRATEGY) Modeli 5. Bileşenler, Taşıyıcılar, ve Bileşik (COMPOSITE) Modeli 6. Kaydırma Çubukları ve Dekoratör (DECORATOR) Modeli 7. Modelleri Nasıl Anlayabiliriz? 8. Modelleri işlevsel hale Getirme 3
4 Liste Döngüleri LinkedList<String> list =...; ListIterator<String> iterator = list.listiterator(); while (iterator.hasnext()) { String current = iterator.next();... Neden Döngüler? 4
5 Traverse links directly Klasik Liste Data Yapısı Link currentlink = list.head; while (currentlink!= null) { Object current = currentlink.data; currentlink = currentlink.next; Uygulama görünür haldedir. Hatalara karşı dayanıksızdır. 5
6 Kuyruk Veri Yapılarının Üst Düzey Görünümü Rastgele Erişimli Dizin Liste??? 6
7 İmleçli Liste for (list.reset(); list.hasnext(); list.next()) { Object x = list.get();... Dezavantaj: Liste başına sadece bir İmleç Döngü bir üst konsepttir. 7
8 1. Model olarak Döngüler (Iterator) 2. Model Konsepti 3. Gözleyici (Observer) Modeli 4. Yapımodeli Yöneticileri (Layout Managers) ve Strateji (STRATEGY) Modeli 5. Bileşenler, Taşıyıcılar, ve Bileşik (COMPOSITE) Modeli 6. Kaydırma Çubukları ve Dekoratör (DECORATOR) Modeli 7. Modelleri Nasıl Anlayabiliriz? 8. Modelleri işlevsel hale Getirme 8
9 Model Mantığı Tarihi: Mimari Modeller Christopher Alexander Her model; Kısa bir isme, Konunun kısa bir özetine, Problemin uzunca bir tanımına, Çözüm için bir reçeteye sahiptir. 9
10 Kısa Koridor Modeli Özet "...Uzun, sıkıcı koridorlar modern mimaride herşeyin kötü görünmesine neden olurlar..." Problem İçkarartıcı bir resim. Işığın ve mobilyanın önemli noktaları Hastanelerdeki hastaların endişeleri üzerinde yapılan araştırmalar 50 ft. üzerindeki koridorların rahatsız edici olduğunu söyleyen araştırmalar 10
11 Çözüm Kısa Koridor Modeli Koridorlar kısa tutulmalı. Olabildiğince çok çiçek, halı, kitaplık, pencere vb. eşyalarla odalara benzetilmeli. Şekil olarak geniş ve bolca ışık alacak şekilde yapılmalı. En iyi koridor tipi tüm duvar boyunca penceresi olan koridorlardır. 11
12 Neden Patternler? Nesne tabanlı yazılımı dizayn etmek zordur, yeniden kullanılabilir nesne tabanlı program geliştirmek dahada zordur. Eric Gamma Tecrübeli dizaynırlar eskiden karşılaşmış oldukları problemlere buldukları çözümleri yeniden kullanırlar. İyi dizayn edilmiş bir nesne tabanlı sistemlerde sınıf ve nesne patternlerine sahiptir. Patternlerle daha önce çalışan dizaynerlar daha üretken olurlar. Ürettmiş oldukları yazılımda daha kullanışlı ve tekrar kullanılabilir olur. 12
13 Design Patternlerin Faydaları Developerlar arasındaki iletişimi geliştirir. İyi dizayn edilen bir yazılımın tekrar kullanılmasını kolaylaştırır. Dizayn üzerinde yapacağınız değişiklikleri kolaylaştırır. Dökümantasyonunuzu geliştirir. Dizaynın anlaşılabilirliğini artırır. 13
14 Design Patternlerin Dezavantajları Patternler sizi doğrudan kodun yeniden kullanımına götürmezler. Patternler aldatıcı şekilde basittirler. Takımlar patternlerin aşırı kullanılması sonucu kötüye gidebilirler. Patternler tecrübe ve münazara ile onaylanır,anlaşılır.. Sürekli test ederek değil. 14
15 Yazılım Patternlerinin Tarihi Cunningham ve Beck Alexanderın pattern fikirlerini geliştirip, küçük bir pattern dili olan Smalltalk u geliştirdiler The Gang of Four (Gamma, Helm, Johnson and Vlissides) design pattern kataloğu hakkında çaloşmaya başladılar Bruce Anderson ilk Patterns Workshop(atelyeyi) u OOPSLA oluşturdu Kent Beck and Grady Booch ilk buluşmaya sponsor oldular. (Hillside Group) First Pattern Languages of Programs (PLoP) conference The Gang of Four (GoF) Design Patterns kitabı yayınladı. 15
16 GoF (Gang of Four) Design Patterns Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (Gang of Four GoF), Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley, Kitapta tanımlanan toplam 23 tane pattern vardır. Ve bunlar 3 alana ayrılmıştır: Creational, Structural, ve Behavioral. 16
17 GoF Design Patternlerinin sınıflandırılması 17
18 GoF Design Patternlerinin Gerekli Elemanları 18
19 GoF Pattern Template(kalıp) 19
20 GoF Pattern Template (devamı) 20
21 GoF Pattern Template (Devamı) 21
22 GoF Gösterim Şekli Nesne ve Sınıf diagramlarının gösterimi için GoF kitabı Object Modeling Technique (OMT) notasyonlarını(şeklini) kullanıyor. Notational özellikler Attributler, methodlardan sonra gelir. Associationlar bildik,tanıdık Çokluk koyu yuvarlaklar halinde gösterilir. Kalıtım üçgen şeklinde gösterilir. 22
23 GoF Gösterim şekli 23
24 Design Patternlerin UML gösterimi UML i design patternlerde göreceğiz. 24
25 Creational Patternler (5 patterns) Factory Method (OODP Chp10) Method in a derived class creates associates Abstract Factory Birbirleri arasında ilişkili nesne üretmek. Builder Karmaşık bir objenin oluşumu sağlamak Prototype Bir instance ın çoğaltmak için kullanılır Singleton (OODP Chp10) Sadece ve sadece bir nesnenin oluşturulmasına izin verir. 25
26 Structural Patternleri (7 patterns) Adapter (OODP Chp10) Translator adapts a server interface for a client Bridge Abstraction for binding one of many implementations Composite (OODP Chp5) Structure for building recursive aggregations Decorator (OODP Chp5) Decorator extends an object transparently Facade Facade simplifies the interface for a subsystem Flyweight Many fine-grained objects shared efficiently Proxy (OODP Chp10) One object approximates another 26
27 Behavioral Patternleri (11 patterns) Chain of Responsibility Request delegated to the responsible service provider Command (OODP Chp10) Request as first-class object Interpreter Language interpreter for a small grammar Iterator (OODP Chp5) Aggregate elements are accessed sequentially Mediator Mediator coordinates interactions between its associates Memento Snapshot captures and restores object states privately 27
28 Behavioral Patternleri (continued) Observer (OODP Chp5) Dependents update automatically when a subject changes State Object whose behavior depends on its state Strategy (OODP Chp5) Abstraction for selecting one of many algorithms Template Method Algorithm with some steps supplied by a derived class Visitor (OODP Chp10) Operations applied to elements of an heterogeneous object structure 28
29 GoF Patternleri arasındaki ilişkiler 29
30 Döngü (Iterator) Modeli Özet 1. Bir nesneyi oluşturan elemanlar vardır. 2. Kullanıcılar bu elemanlara ulaşmak isteyebilirler. 3. Nesnemiz iç yapısını dıştan göstermemelidir. 4. Bir çok kullanıcı sınırsız erişim isteyebilir. Çözüm 1. Her elemanı bir kere getiren bir döngü tanımlanır. 2. Her döngü elemanı bir sonraki elemanın pozisyonunu kaydeder. 3. Eğer birden fazla nesne varsa, nesnelerin sık kullanılan arayüz tiplerini ayırt edebilmesi en iyisidir. Bu şekilde kullanıcının sadece arayüz tiplerini bilmesi yeterli olur. Kesin kalıplara gerek kalmaz. 30
31 Döngü (Iterator) Modeli 31
32 Döngü (Iterator) Modeli Modeldeki isimler örnekleri oluşturur. Names differ in each occurrence of pattern Dizayn Modelindeki İsim Aggregate ConcreteAggregate Iterator ConcreteIterator createiterator() next() isdone() currentitem() Bağlı Listede kullanılan İsim List LinkedList ListIterator anonymous class implementing ListIterator listiterator() next() opposite of hasnext() return value of hasnext() 32
33 1. Model olarak Döngüler (Iterator) 2. Model Konsepti 3. Gözleyici (Observer) Modeli 4. Yapımodeli Yöneticileri (Layout Managers) ve Strateji (STRATEGY) Modeli 5. Bileşenler, Taşıyıcılar, ve Bileşik (COMPOSITE) Modeli 6. Kaydırma Çubukları ve Dekoratör (DECORATOR) Modeli 7. Modelleri Nasıl Anlayabiliriz? 8. Modelleri işlevsel hale Getirme 33
34 Model/Görünüm/Düzenleyici Bazı programlar değiştirilebilir birden fazla görünüme sahiptirler. Örneğin: HTML Editörü WYSIWYG görünümü Yapısal Görünüm Kaynak Kod Görünümü Bir görünümdeki değişiklik diğerlerine de yansıtılmalı. Görünüm anlık olarak güncellenir. 34
35 HTML Editörü: MS FrontPage WYSIWYG Görünümü 35
36 MS FrontPage Kod Görünümü 36
37 MS FrontPage Yapısal (Navigation) Görünümü 37
38 Windows MVC architecture örneği: The model dosya ismi dp3.ppt. One view is a window titled CENG 534 Design Patterns. 38
39 Model: Veri Yapısı, görsel gösterim yok Model/Görünüm/Düzenleyici Görünümler: Görsel gösterimler Düzenleyiciler: Kullanıcıyla etkileşimler Görünüm/Düzenleyici güncelleme modeli Model Görünümlere veri değişikliklerini haber verir. Görünümler kendilerini günceller. 39
40 Gözleyici (Observer) Modeli Model; Görünümleri, onları ilgilendiren bir durum olduğunda uyarır. Buton; aksiyon dinleyicileri farklı bir durum olduğunda uyarır. Görünümler kendilerini uyarılmalarına göre Modele bağlarlar. Aksiyon Dinleyicileri kendilerini uyarılmalarına göre butona bağlarlar. Genelleme: Gözleyiciler kendilerini özneye bağlarlar. 40
41 Gözleyici (Observer) Modeli Özet 1. Özne adı verilen bir nesne olayların kaynağıdır. 2. Bir veya daha fazla gözleyici nesne, onları ilgilendiren bir olay olduğunda uyarılmalıdır. Çözüm 1. Bir gözleyici arayüzü tanımlanır. Bütün alt gözleyiciler bu arayüz üzerinden üretilir. 2. Özne gözleyicilerden oluşan bir koleksiyon içerir. 3. Özne gözleyici ekleme ve çıkarma için gerekli metodları içerir. 4. Bir olay olduğunda özne tüm gözleyicileri uyarır. 41
42 Gözleyici (Observer) Modeli 42
43 Observer Pattern Java 1.1 yeni GUI event model kısmı Observer patternden alıntı yapılarak hazırlanmıştır. Comparison to the Observer Pattern: Subject => eventin kaynağı (Example: JButton) Observer => Action Listener ConcreteObserver => Action Listener implementasyonu 43
44 Observer Pattern isimlendirmesi Design Pattern deki İsim Subject Observer Gerçek İsim (Swing buttons) JButton ActionListener ConcreteObserver attach() notify() ActionListener interface inden implements eden sınıf. addactionlistener() actionperformed() 44
45 Amaç Observer Pattern (GoF Kitabından ) one-to-many dependency(birden çok a doğru) nesneler arasında ilişki tanımlak bu vesile ile bir nesnenin durumu değiştiği zaman, o nesneye bağımlı olanlar haberdar edilecektir.. Also Known As Dependents, Publish-Subscribe, Model-View. Motivasyın Sınıflar kendi aralarında çok karışık bir şekilde bağlanmazlar. 45
46 Uygulanabilirliği (Applicability) Observer pattern şu gibi durumlarda uygulanmalıdır: Bir nesne üzerinde değişklik yaptığım zaman başka bir nesne üzerinde değişiklik yapmam gerekiyorsa bu pattern uygulanabilir. Eyer nesne diğer nesneleri uyarması gerekiyorsa bu pattern uygulanabilir. 46
47 yapısı (GoF kitabından alıntı) 47
48 Participants Subject The Elements of Observer Pattern Keeps track of its observers Provides an interface for attaching and detaching Observer objects Observer Defines an interface for update notification ConcreteSubject The object being observed Stores state of interest to ConcreteObserver objects Sends a notification to its observers when its state changes ConcreteObserver The observing object Stores state that should stay consistent with the subject's Implements the Observer update interface to keep its state consistent with the subject's 48
49 Consequences Benefits Minimal coupling between the Subject and the Observer Can reuse subjects without reusing their observers and vice versa Observers can be added without modifying the subject All subject knows is its list of observers Subject does not need to know the concrete class of an observer, just that each observer implements the update interface Subject and observer can belong to different abstraction layers Support for event broadcasting Liabilities Subject sends notification to all subscribed observers Observers can be added/removed at any time Possible cascading of notifications Observers are not necessarily aware of each other and must be careful about triggering updates Simple update interface requires observers to deduce changed item 49
50 Sample Code, Known Uses and Related Patterns Sample Code We'll see some Java soon! Known Uses Smalltalk Model/View/Controller user interface framework Model = Subject View = Observer Controller is whatever object changes the state of the subject Related Patterns Mediator To encapsulate complex update semantics 50
51 Together for Eclipse Architect 2006 ın Design Patterns Templatinin kullanımı Class By Templete kısmını kullanın veya diyagram üzerinde herhangi bir sınıf belirleyin ve herhangi bir Gof patternini uygulayın. 51
52 Templatin Seçimi ve Parametreleri Belirleme 52
53 Observerlar ve Observablar Together tarafından otomatik olarak üretiliyor Create Pattern Links: unchecked 53
54 Observerlar ve Observablar Together tarafından otomatik olarak üretiliyor Pattern linkleri üretiliyor: 54
55 import java.util.arraylist; import java.util.iterator; /** Subject */ public class Vehicle { Together tarafından üretilen dosyalar: nesne: Vehicle.java private ArrayList observers; /** PatternLink gof.observer Abstract Observer */ /* # private TrafficControl lnktrafficcontrol; */ public void attach(trafficcontrol observer) { observers.add(observer); public void detach(trafficcontrol observer) { observers.remove(observer); public void notifyobservers() { Iterator it = observers.iterator(); while (it.hasnext()) { ((TrafficControl) it.next()).update(this); 55
56 Objeleri oluşturulabilen nesneler(concreate object): Car, Truck, and Van /** * Stores state of interest to ConcreteObserver objects. * Sends a notification to its observers when its state changes. */ public class Car extends Vehicle { /** * Stores state of interest to ConcreteObserver objects. * Sends a notification to its observers when its state changes. */ public class Truck extends Vehicle { /** * Stores state of interest to ConcreteObserver objects. * Sends a notification to its observers when its state changes. */ public class Van extends Vehicle { 56
57 Traffic Control Interface and Concrete Observers /** Observer */ public interface TrafficControl { /** PatternLink gof.observer Abstract Subject */ /*# private Vehicle lnkvehicle;*/ void update(vehicle subject); /** * Implements the Observer updating interface to keep * its state consistent with the subject's. */ public class HighwayPatrol implements TrafficControl { public void update(vehicle subject) { //put your code here /** * Implements the Observer updating interface to keep * its state consistent with the subject's. */ public class Sheriff implements TrafficControl { public void update(vehicle subject) { //put your code here 57
58 Java Implementation of Observer Pattern We could implement the Observer pattern from scratch in Java But Java provides the Observable/Observer classes as built-in support for the Observer pattern The java.util.observable class is the base Subject class. Any class that wants to be observed extends this class. Provides methods to add/delete observers Provides methods to notify all observers A subclass only needs to ensure that its observers are notified in the appropriate mutators Uses a Vector for storing the observer references The java.util.observer interface is the Observer interface. It must be implemented by any observer class. 58
59 The java.util.observable Class public Observable() Construct an Observable with zero Observers public synchronized void addobserver(observer o) Adds an observer to the set of observers of this object public synchronized void deleteobserver(observer o) Deletes an observer from the set of observers of this object protected synchronized void setchanged() Indicates that this object has changed protected synchronized void clearchanged() Indicates that this object has no longer changed, or that it has already notified all of its observers of its most recent change. This method is called automatically by notifyobservers(). 59
60 The java.util.observable Class public synchronized boolean haschanged() Tests if this object has changed. Returns true if setchanged() has been called more recently than clearchanged() on this object; false otherwise. public void notifyobservers(object arg) If this object has changed, as indicated by the haschanged() method, then notify all of its observers and then call the clearchanged() method to indicate that this object has no longer changed. Each observer has its update() method called with two arguments: this observable object and the arg argument. The arg argument can be used to indicate which attribute of the observable object has changed. public void notifyobservers() Same as above, but the arg argument is set to null. That is, the observer is given no indication what attribute of the observable object has changed. 60
61 The java.util.observer Interface public abstract void update(observable o, Object arg) This method is called whenever the observed object is changed. An application calls an observable object's notifyobservers method to have all the object's observers notified of the change. Parameters: o - the observable object arg - an argument passed to the notifyobservers method 61
62 Observable/Observer Example 62
63 ConcreteSubject.java import java.util.observable; /** A subject to observe! */ public class ConcreteSubject extends Observable { private String name; private float price; public ConcreteSubject(String name, float price) { this.name = name; this.price = price; System.out.println("ConcreteSubject created: " + name + " at " + price); public String getname() { return name; public float getprice() { return price; public void setname(string name) { this.name = name; setchanged(); notifyobservers(name); public void setprice(float price) { this.price = price; setchanged(); notifyobservers(new Float(price)); 63
64 import java.util.observer; import java.util.observable; // An observer of name changes. public class NameObserver implements Observer { private String name; Name and Price Observers public NameObserver() { name = null; System.out.println("NameObserver created: Name is " + name); public void update(observable obj, Object arg) { if (arg instanceof String) { name = (String)arg; System.out.println("NameObserver: Name changed to " + name); import java.util.observer; import java.util.observable; // An observer of price changes. public class PriceObserver implements Observer { private float price; public PriceObserver() { price = 0; System.out.println("PriceObserver created: Price is " + price); public void update(observable obj, Object arg) { if (arg instanceof Float) { price = ((Float)arg).floatValue(); System.out.println("PriceObserver: Price changed to " + price); 64
65 TestObservers.java import java.util.observer; import java.util.observable; // Test program for ConcreteSubject, NameObserver and PriceObserver public class TestObservers { public static void main(string args[]) { // Create the Subject and Observers. ConcreteSubject s = new ConcreteSubject("Corn Pops", 1.29f); NameObserver nameobs = new NameObserver(); PriceObserver priceobs = new PriceObserver(); // Add those Observers! s.addobserver(nameobs); s.addobserver(priceobs); // Make changes to the Subject. s.setname("frosted Flakes"); s.setprice(4.57f); s.setprice(9.22f); s.setname("surge Crispies"); 65
66 Basit MVC Örneği: CounterGui import java.awt.event.*; import java.awt.*; public class CounterGui extends Frame { private int counter = 0; // Model! private TextField tf = new TextField(10); // View. public CounterGui(String title) { super(title); Panel tfpanel = new Panel(); tf.settext("0"); tfpanel.add(tf); add("north", tfpanel); Panel buttonpanel = new Panel(); Button incbutton = new Button("Increment"); incbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { counter++; tf.settext(counter + ""); ); buttonpanel.add(incbutton); Button exitbutton = new Button("Exit"); exitbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { System.exit(0); ); buttonpanel.add(exitbutton); add("south", buttonpanel); addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0); ); public static void main(string[] argv) { CounterGui cg = new CounterGui("CounterGui"); cg.setsize(300, 100); cg.setvisible(true); Button decbutton = new Button("Decrement"); decbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { counter--; tf.settext(counter + ""); ); buttonpanel.add(decbutton); Bu örnekteki controller nerede?? Controllerlar anonymous sınıflarının birer instance ıdır ve butona tıklanıldığı zaman bu aktion ı alır. 66
67 Account System based on MVC Architecture Advanced Java 2 Platform, How to Program, H. M. Deitel, kitabından alınmıstır..) 67
68 The Class Diagrams of the Account System 68
69 Sequence of Events 2.Kullanıcı Account ı yeniledi. :Controller 1. Event e view üye oluyor. 5. View ler yenilendi :AccountTextView 3. model Account değişikliğini aldı 4. Üyü olanlara değiştiğine Dair veri gonderildi. :AccountBarGrapView :AssetPieChartView 69
70 1. The ITERATOR as a Pattern 2. The Pattern Concept and Introduction to GoF Design Patterns 3. The OBSERVER Pattern 4. Layout Managers and the STRATEGY Pattern 5. Components, Containers, and the COMPOSITE Pattern 6. Scroll Bars and the DECORATOR Pattern 7. How to Recognize Patterns 8. Putting Patterns to Work 70
71 Gözleyici Modelindeki isimler Dizayn Modelindeki İsimler Subject Observer Swing Butonlarında kullanılan İsimler JButton ActionListener ConcreteObserver attach() notify() the class that implements the ActionListener interface type addactionlistener() actionperformed() 71
72 1. Model olarak Döngüler (Iterator) 2. Model Konsepti 3. Gözleyici (Observer) Modeli 4. Yapımodeli Yöneticileri (Layout Managers) ve Strateji (STRATEGY) Modeli 5. Bileşenler, Taşıyıcılar, ve Bileşik (COMPOSITE) Modeli 6. Kaydırma Çubukları ve Dekoratör (DECORATOR) Modeli 7. Modelleri Nasıl Anlayabiliriz? 8. Modelleri işlevsel hale Getirme 72
73 Yapıkalıpları Düzenleyicileri Kullanıcı arayüzleri bileşenlerden oluşmuştur. Bileşenler Taşıyıcılara yerleştirilmiştir. Taşıyıcı bileşenleri sıralamaya gerek duyar. Swing alt düzey kodlardan oluşan piksel kordinatları kullanmaz Avantajları: look and feel değiştirilebilir. Karakter dizinlerinin tüm sınıflar tarafından kullanılabilmesi. Yapıkalıpları yerleşmeyi kontrol eder. 73
74 Yapıkalıpları Düzenleyicileri FlowLayout: soldan sağa, sıra dolunca yeni bir satıra geçer. BoxLayout: soldan sağa veya yukarıdan aşağıya BorderLayout: 5 alan, Center (Merkez), North (Kuzey), South (Güney), East (Doğu), West (Batı) GridLayout: parçalar, tüm bileşenler aynı boyuttadır. GridBagLayout: karmaşık, HTML tablolarına benzer. 74
75 Yapıkalıpları Düzenleyicileri 75
76 Yapıkalıpları Düzenleyicileri Yapıkalıbı belirlenir: JPanel keypanel = new JPanel(); keypanel.setlayout(new GridLayout(4, 3)); Bileşenler eklenir. for (int i = 0; i < 12; i++) keypanel.add(button[i]); 76
77 Sesli Mesaj Sistemi GUI Yazı tabanlı sistemle aynı yapıya sahip Sadece Telephone sınıfı değişiyor. Klavye yerine butonlar Mikrofon ve hoparlör yerine yazı alanları 77
78 Sesli Mesaj Sistemi GUI Tuşları panele GridLayout kullanarak yerleştiriyoruz: JPanel keypanel = new JPanel(); keypanel.setlayout(new GridLayout(4, 3)); for (int i = 0; i < 12; i++) { JButton keybutton = new JButton(...); keypanel.add(keybutton); keybutton.addactionlistener(...); 78
79 Sesli Mesaj Sistemi GUI Hoparlör yerine BorderLayout kullanılan bir Panel: JPanel speakerpanel = new JPanel(); speakerpanel.setlayout(new BorderLayout()); speakerpanel.add(new JLabel("Speaker:"), BorderLayout.NORTH); speakerfield = new JTextArea(10, 25); speakerpanel.add(speakerfield, BorderLayout.CENTER); 79
80 Sesli Mesaj Sistemi GUI Hoparlör, tuş takımı ve mikrofon paneli content pane içine eklenir. Content pane zaten BorderLayout ile düzenlenmiştir. Ch5/mailgui/Telephone.java 80
81 Telephone.java (1) import java.awt.*; import java.awt.event.*; import javax.swing.*; // Presents a phone GUI for the voice mail system. public class Telephone { // Constructs a telephone with a speaker, keypad, and microphone. public Telephone() { JPanel speakerpanel = new JPanel(); speakerpanel.setlayout(new BorderLayout()); speakerpanel.add(new JLabel("Speaker:"), BorderLayout.NORTH); speakerfield = new JTextArea(10, 25); speakerpanel.add(speakerfield, BorderLayout.CENTER); String keylabels = " *0#"; JPanel keypanel = new JPanel(); keypanel.setlayout(new GridLayout(4, 3)); for (int i = 0; i < keylabels.length(); i++) { final String label = keylabels.substring(i, i + 1); JButton keybutton = new JButton(label); keypanel.add(keybutton); keybutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent event) { connect.dial(label); );.. 81
82 Telephone.java (2) final JTextArea microphonefield = new JTextArea(10,25); JButton speechbutton = new JButton("Send speech"); speechbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent event) { connect.record(microphonefield.gettext()); microphonefield.settext(""); ); JButton hangupbutton = new JButton("Hangup"); hangupbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent event) );.. { connect.hangup(); 82
83 Telephone.java (3) JPanel buttonpanel = new JPanel(); buttonpanel.add(speechbutton); buttonpanel.add(hangupbutton); JPanel microphonepanel = new JPanel(); microphonepanel.setlayout(new BorderLayout()); microphonepanel.add(new JLabel("Microphone:"), BorderLayout.NORTH); microphonepanel.add(microphonefield, BorderLayout.CENTER); microphonepanel.add(buttonpanel, BorderLayout.SOUTH); JFrame frame = new JFrame(); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.add(speakerpanel, BorderLayout.NORTH); frame.add(keypanel, BorderLayout.CENTER); frame.add(microphonepanel, BorderLayout.SOUTH); frame.pack(); frame.setvisible(true); // Give instructions to the mail system user. public void speak(string output) { speakerfield.settext(output); public void run(connection c) { connect = c; private JTextArea speakerfield; private Connection connect; 83
84 Form yapıkalıbı Özel bir Yapıkalıbı Tek numaralı bileşenler sağa hizalanır. Çift numaralı bileşenler sola hizalanır LayoutManager arayüzünü temel alır. 84
85 LayoutManager Arayüz Tipi public interface LayoutManager { void layoutcontainer(container parent); Dimension minimumlayoutsize(container parent); Dimension preferredlayoutsize(container parent); void addlayoutcomponent(string name, Component comp); void removelayoutcomponent(component comp); Ch5/layout/FormLayout.java Ch5/layout/FormLayoutTester.java Not: Aynı etkinin oluşturulması için GridBagLayout kullanılabilir. 85
86 FormLayout.java (1) import java.awt.*; /** A layout manager that lays out components along a central axis */ public class FormLayout implements LayoutManager { public Dimension preferredlayoutsize(container parent) { Component[] components = parent.getcomponents(); left = 0; right = 0; height = 0; for (int i = 0; i < components.length; i += 2) { Component cleft = components[i]; Component cright = components[i + 1]; Dimension dleft = cleft.getpreferredsize(); Dimension dright = cright.getpreferredsize(); left = Math.max(left, dleft.width); right = Math.max(right, dright.width); height = height + Math.max(dleft.height, dright.height); return new Dimension(left + GAP + right, height); public Dimension minimumlayoutsize(container parent) { return preferredlayoutsize(parent);.. 86
87 FormLayout.java (2) public void layoutcontainer(container parent) { preferredlayoutsize(parent); // Sets left, right Component[] components = parent.getcomponents(); Insets insets = parent.getinsets(); int xcenter = insets.left + left; int y = insets.top; for (int i = 0; i < components.length; i += 2) { Component cleft = components[i]; Component cright = components[i + 1]; Dimension dleft = cleft.getpreferredsize(); Dimension dright = cright.getpreferredsize(); int height = Math.max(dleft.height, dright.height); cleft.setbounds(xcenter - dleft.width, y + (height - dleft.height) / 2, dleft.width, dleft.height); cright.setbounds(xcenter + GAP, y + (height - dright.height) / 2, dright.width, dright.height); y += height; public void addlayoutcomponent(string name, Component comp) { public void removelayoutcomponent(component comp) { private int left; private int right; private int height; private static final int GAP = 6; 87
88 Strateji (Strategy) Modeli Pluggable strategy for layout management Layout manager object responsible for executing concrete strategy Generalizes to Strategy Design Pattern Other manifestation: Comparators Comparator<Country> comp = new CountryComparatorByName(); Collections.sort(countries, comp); 88
89 Strateji (Strategy) Modeli Özet 1. Sınıflar bir algoritmanın değişik biçimlerini kullanabilirler. 2. Kullanıcılar bazen standart algoritmaları özel versiyonlarıyla değiştirmek isteyebilirler. Çözüm 1. Algoritmanın genel hali için bir arayüz tipi tanımlanır. 2. Kulanılan strateji sınıfları bu arayüz tipini tanırlar. 3. Kullanıcılar strateji objelerini sağlayabilirler. 4. Algoritmanın çalıştırılması gerektiği zaman Context sınıfı strateji nesnesinin kendine özel metotlarını çağırır. 89
90 Strateji (Strategy) Modeli 90
91 Strateji (Strategy) Modeli Dizayn Modelindeki İsim Context Strategy ConcreteStrategy dowork() Yapıkalıbı Yönetimindeki İsim Container LayoutManager a layout manager such as BorderLayout a method such as layoutcontainer 91
92 Strateji (Strategy) Modeli: Sıralama Dizayn Modelindeki İsim Context Strategy ConcreteStrategy Sorting Algoritmasında kullanılan İsim Collections Comparator a class that implements Comparator 92
93 1. Model olarak Döngüler (Iterator) 2. Model Konsepti 3. Gözleyici (Observer) Modeli 4. Yapımodeli Yöneticileri (Layout Managers) ve Strateji (STRATEGY) Modeli 5. Bileşenler, Taşıyıcılar, ve Bileşik (COMPOSITE) Modeli 6. Kaydırma Çubukları ve Dekoratör (DECORATOR) Modeli 7. Modelleri Nasıl Anlayabiliriz? 8. Modelleri işlevsel hale Getirme 93
94 Taşıyıcılar ve Bileşenler Taşıyıcılar GUI bileşenlerini taşırlar. Bazen bir taşıyıcı içine başka bir taşıyıcı eklenmek istenebilir. Taşıyıcı da bir Bileşen olmak zorundadır. Bileşik (Composite) Dizayn Modeli Bileşik metodu doğrudan bileşen metotlarını çağırır. Örneğin: Container.getPreferredSize metodu, bileşenlerin getpreferredsize metodundan gelir. 94
95 Bileşik Modeli Özet 1. Asıl nesneler bileşik nesnelere bağlı olmalıdır. 2. Kullanıcılar, bileşik nesneyi asıl nesne gibi görebilirler. Çözüm 1. Asıl nesnelerin temeli olacak bir arayüz tipi tanımlanır. 2. Bileşik nesne asıl nesneleri içerir. 3. Bileşik ve asıl nesnelerin sınıfları aynı arayüzden oluşturulmuştur. 4. Arayüzdeki bir metodu oluştururken bileşik sınıf bu metodu kendi asıl nesnelerine uygular ve sonuçlarını birleştirir. 95
96 Bileşik Modeli 96
97 Bileşik Modeli Dizayn Modelindeki İsim Primitive Composite Leaf method() AWT bileşenlerinde kullanılan İsim Component Container a component without children (e.g. JButton) a method of Component (e.g.getpreferredsize) 97
98 1. Model olarak Döngüler (Iterator) 2. Model Konsepti 3. Gözleyici (Observer) Modeli 4. Yapımodeli Yöneticileri (Layout Managers) ve Strateji (STRATEGY) Modeli 5. Bileşenler, Taşıyıcılar, ve Bileşik (COMPOSITE) Modeli 6. Kaydırma Çubukları ve Dekoratör (DECORATOR) Modeli 7. Modelleri Nasıl Anlayabiliriz? 8. Modelleri işlevsel hale Getirme 98
99 Kaydırma Çubukları (Scroll Bars) Kadırma Çubukları bileşenlere eklenebilir. Yaklaşım #1: Component sınıfı kaydırma çubuklarını aktif hale getirebilir. Yaklaşım #2: Kaydırma Çubukları bileşeni çevreleyebilir. JScrollPane pane = new JScrollPane(component); Swing Yaklaşım #2 yi kullanır. JScrollPane de bir bileşendir. 99
100 Kaydırma Çubukları (Scroll Bars) 100
101 Dekoratör (Decorator) Modeli Özet 1. Bileşen nesneler dekore edilebilir. (görsel veya davranış olarak geliştirilebilir.) 2. Dekore edilmiş nesne dekore edilmemiş bir nesne ile aynı şekilde kullanılır. 3. Bileşen sınıfı dekorasyonun sorumluluğunu üstlenmez. 4. Mümkün olan dekorasyonların sonu olmayabilir. Çözüm 1. Bileşenin temelini oluşturacak bir arayüz tanımlanır. 2. Asıl bileşen sınıfları bu arayüzden oluşturulur. 3. Dekoratör sınıfları da bu arayüzden oluşturulur. 4. Bir dekoratör nesnesi dekore ettiği bileşeni kontrol eder. 5. Bileşenin arayüzünden bir metot oluşturulurken dekoratör sınıfı bu metodu dekore edilmiş bileşene uygular ve sonuçlarını dekorasyonun etkileriyle birleştirir. 101
102 Dekoratör (Decorator) Modeli 102
103 Dekoratör (Decorator) Modeli: Kaydırma Çubukları Dizayn Modelindeki İsim Component ConcreteComponent Decorator method() Kaydırma Çubuklarında kullanılan İsim Component JTextArea JScrollPane a method of Component (e.g. paint) 103
104 Akımlar (Streams) InputStreamReader reader = new InputStreamReader(System.in); BufferedReader console = new BufferedReader(reader); BufferedReader bir Reader alır ve tampona ekler. Sonuç başka bir Reader dır: Dekoratör Modeli Akım kütüphanesinde daha birçok dekoratör vardır, Örn: PrintWriter 104
105 Dekoratör (Decorator) Modeli: Giriş Akımları Dizayn Modelindeki İsim Component ConcreteComponent Decorator method() Giriş Akımlarındaki (input streams) isim Reader InputStreamReader BufferedReader read 105
106 1. Model olarak Döngüler (Iterator) 2. Model Konsepti 3. Gözleyici (Observer) Modeli 4. Yapımodeli Yöneticileri (Layout Managers) ve Strateji (STRATEGY) Modeli 5. Bileşenler, Taşıyıcılar, ve Bileşik (COMPOSITE) Modeli 6. Kaydırma Çubukları ve Dekoratör (DECORATOR) Modeli 7. Modelleri Nasıl Tanıyabiliriz? 8. Modelleri işlevsel hale Getirme 106
107 Modelleri Tanıma Modelin amacına bakalım Örn. COMPOSITE; DECORATOR den farklı bir amaca sahiptir. Kullanımları hatırlarsak: e.g. Yapıkalıpları için STRATEGY Stratejik olan herşey STRATEGY modeline bir örnek değildir. Özet ve çözüm turnusol kağıdı gibi kullanılabilir. 107
108 Turnusol Kağıdı Testi Swing bileşenine bir Border (sınır) ekleyelim. Border b = new EtchedBorder(); component.setborder(b); Şüphesiz ki bir dekorasyondur. DECORATOR ün bir örneği olabilir mi? 108
109 Turnusol Kağıdı Testi 1. Bileşen nesneler dekore edilebilir. GEÇTİ 2. Dekore edilmiş nesne dekore edilmeyenle aynı şekilde kullanılabilir. GEÇTİ 3. Bileşen sınıfı dekorasyonun sorumluluğunu üstlenmez. KALDI Bileşen sınıfı setborder metoduna sahip. 4. Mümkün olan dekorasyonların sonu olmayabilir. 109
110 1. Model olarak Döngüler (Iterator) 2. Model Konsepti 3. Gözleyici (Observer) Modeli 4. Yapımodeli Yöneticileri (Layout Managers) ve Strateji (STRATEGY) Modeli 5. Bileşenler, Taşıyıcılar, ve Bileşik (COMPOSITE) Modeli 6. Kaydırma Çubukları ve Dekoratör (DECORATOR) Modeli 7. Modelleri Nasıl Tanıyabiliriz? 8. Modelleri işlevsel hale Getirme 110
111 Modelleri işlevsel hale Getirme Fatura line items (Çizgi parçaları) içerir. Çizgi parçasının bir tanımı vardır, ücret Arayüz tipi: LineItem: Ch5/invoice/LineItem.java Ürünün asıl sınıfı bu arayüzden oluşturulmuştur: Ch5/invoice/Product.java 111
112 LineItem.java ve Product.java /** A line item in an invoice. /** A product with a price and description. */ public interface LineItem { /**Gets the price of this line the price */ double getprice(); /** Gets the description of this line the description */ String tostring(); */ public class Product implements LineItem { /**Constructs a description the price the price */ public Product(String description, double price) { this.description = description; this.price = price; public double getprice() { return price; public String tostring() { return description; private String description; private double price; 112
113 Desteler (Bundles) Deste (Bundle) = tanım+ücretle alakalı parçaların kümesi Örn. Radyo Kasetçalar, CD Player+Hoparlörler Bir deste çizgi parçalarına sahiptir. Deste de bir çizgi parçasıdır. COMPOSITE (Bileşik) Modeli Ch5/invoice/Bundle.java (getprice metoduna bakınız.) 113
114 Bundle.java import java.util.*; // A bundle of line items that is again a line item. public class Bundle implements LineItem { // Constructs a bundle with no items. public Bundle() { items = new ArrayList<LineItem>(); /** Adds an item to the item the item to add */ public void add(lineitem item) { items.add(item); public double getprice() { double price = 0; for (LineItem item : items) price += item.getprice(); return price; public String tostring() { String description = "Bundle: "; for (int i = 0; i < items.size(); i++) { if (i > 0) description += ", "; description += items.get(i).tostring(); return description; private ArrayList<LineItem> items; 114
115 Desteler (Bundles) 115
116 İskonto Parçalar (Discounted Items) Mağaza bir mal için iskonto verebilir. İskonto parça da bir parçadır. DECORATOR modeli Ch5/invoice/DiscountedItem.java (getprice metoduna bakınız.) Alternatif dizayn: LineItem sınıfına iskonto eklenebilir. 116
117 DiscountedItem.java /** A decorator for an item that applies a discount. */ public class DiscountedItem implements LineItem { /**Constructs a discounted item the item to be discount the discount percentage */ public DiscountedItem(LineItem item, double discount) { this.item = item; this.discount = discount; public double getprice() { return item.getprice() * (1 - discount / 100); public String tostring() { return item.tostring() + " (Discount " + discount + "%)"; private LineItem item; private double discount; 117
118 İskonto Parçalar (Discounted Items) 118
119 Model/Görünüm Ayırımı GUI faturaya parça eklemek için komutlara sahiptir. GUI faturayı görüntüler. Ekrandan girdiyi alır. Ekranın fatura değiştirildiğinde haberdar edimesi gerekir. Ekran hangi komutun faturayı değiştirdiğinden haberi yoktur. OBSERVER (Gözleyici) Modeli 119
120 Değişiklik Dinleyicileri (Change Listeners) Standart ChangeListener arayüzünü kullanalım: public interface ChangeListener { void statechanged(changeevent event); Invoice değişiklik dinleyicilerinin ArrayList ini alır. Fatura değiştiğinde tüm dinleyicileri uyarır: ChangeEvent event = new ChangeEvent(this); for (ChangeListener listener : listeners) listener.statechanged(event); 120
121 Değişiklik Dinleyicileri (Change Listeners) Ekran kendisini faturaya bir değişiklik dinleyici olarak ekler. Ekran kendisini fatura nesnesi durum değiştirdiği zaman günceller. final Invoice invoice = new Invoice(); final JTextArea textarea = new JTextArea(20, 40); ChangeListener listener = new ChangeListener() { public void statechanged(changeevent event) { textarea.settext(...); ; 121
122 Faturanın Gözetlenmesi 122
123 Faturalar arasında Döngü Fatura çizgi parçalarını içerir. Kullanıcıların çizgi parçaları üzerinde döngü oluşturmaları gerekir. ArrayList görmezler. Bu değişebilir. (Örn. Faturalar bir veritabanında saklanacaksa) ITERATOR (Döngü) Modeli 123
124 Döngüler Standart Iterator arayüzünü kullanalım: public interface Iterator<LineItem> { boolean hasnext(); LineItem next(); void remove(); remove opsiyonel bir metottur. (bak.: ch. 8) UnsupportedException atar. İç çalışmaları basamak basamak gösterebilmek için hasnext/next oluşturur. Ch5/invoice/Invoice.java 124
125 Invoice.java (1) import java.util.*; import javax.swing.event.*; // An invoice for a sale, consisting of line items. public class Invoice { // Constructs a blank invoice. public Invoice() { items = new ArrayList<LineItem>(); listeners = new ArrayList<ChangeListener>(); /** Adds an item to the item the item to add */ public void additem(lineitem item) { items.add(item); // Notify all observers of the change to the invoice ChangeEvent event = new ChangeEvent(this); for (ChangeListener listener : listeners) listener.statechanged(event); /** Adds a change listener to the listener the change listener to add */ public void addchangelistener(changelistener listener) { listeners.add(listener);. 125
126 Invoice.java (2) /** Gets an iterator that iterates through the an iterator for the items */ public Iterator<LineItem> getitems() { return new Iterator<LineItem>() { public boolean hasnext() { return current < items.size(); public LineItem next() { return items.get(current++); public void remove() { throw new UnsupportedOperationException(); private int current = 0; ; public String format(invoiceformatter formatter) { String r = formatter.formatheader(); Iterator<LineItem>iter = getitems(); while (iter.hasnext()) r += formatter.formatlineitem(iter.next()); return r + formatter.formatfooter(); private ArrayList<LineItem> items; private ArrayList<ChangeListener> listeners; 126
127 Döngüler 127
128 Faturaları düzenleme Basit Format: Yazı Alanı (Text Area) içine yerleştirme. Yeterince iyi olmayabilir, Örn. Browser içinde görüntülenmek için HTML tag leri Birden fazla formatlama algoritmasına gerek duyulabilir. STRATEGY Modeli 128
129 InvoiceFormatter.java /** This interface describes the tasks that an invoice formatter needs to carry out. */ public interface InvoiceFormatter { /**Formats the header of the the invoice header */ String formatheader(); /** Formats a line item of the the formatted line item */ String formatlineitem(lineitem item); /** Formats the footer of the the invoice footer */ String formatfooter(); 129
130 SimpleFormatter.java /** A simple invoice formatter. */ public class SimpleFormatter implements InvoiceFormatter { public String formatheader() { total = 0; return " I N V O I C E\n\n\n"; public String formatlineitem(lineitem item) { total += item.getprice(); return (String.format( "%s: $%.2f\n",item.toString(),item.getPrice())); public String formatfooter() { return (String.format("\n\nTOTAL DUE: $%.2f\n", total)); private double total; 130
131 InvoiceTester.java (1) import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; // A program that tests the invoice classes. public class InvoiceTester { public static void main(string[] args) { final Invoice invoice = new Invoice(); final InvoiceFormatter formatter = new SimpleFormatter(); // This text area will contain the formatted invoice final JTextArea textarea = new JTextArea(20, 40); // When the invoice changes, update the text area ChangeListener listener = new ChangeListener() { public void statechanged(changeevent event) { textarea.settext(invoice.format(formatter)); ; invoice.addchangelistener(listener); // Add line items to a combo box final JComboBox combo = new JComboBox(); Product hammer = new Product("Hammer", 19.95); Product nails = new Product("Assorted nails", 9.95); combo.additem(hammer); Bundle bundle = new Bundle(); bundle.add(hammer); bundle.add(nails); combo.additem(new DiscountedItem(bundle, 10)); 131
132 InvoiceTester.java // Make a button for adding the currently selected // item to the invoice JButton addbutton = new JButton("Add"); addbutton.addactionlistener(new ActionListener() { public void actionperformed(actionevent event) { LineItem item = (LineItem) combo.getselecteditem(); ); invoice.additem(item); // Put the combo box and the add button into a panel JPanel panel = new JPanel(); panel.add(combo); panel.add(addbutton); // Add the text area and panel to the content pane JFrame frame = new JFrame(); frame.add(new JScrollPane(textArea), BorderLayout.CENTER); frame.add(panel, BorderLayout.SOUTH); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.pack(); frame.setvisible(true); 132
133 Faturaları düzenleme 133
134 Faturaları düzenleme 134
135 Kaynaklar Bu ders Object Oriented Design and Patterns kitabı kaynak alınarak düzenlenmiştir [1]. Çeşitli kaynaklardan aldığım bazı slaytlarda yer almıştır. Bunlar aşağıda listelenmiştir: Ana Kaynaklar: 1. Object Oriented Design and Patterns (OODP), 2nd Edition, Cay Horstmann, John Wiley, ISBN: ,
MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)
MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI) Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web
DetaylıMAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 18: Formatlı Grafik Kullanıcı Arayüzü Oluşturma
MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 18: Formatlı Grafik Kullanıcı Arayüzü Oluşturma Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=107
DetaylıJava ile Nesneye Yönelik Programlama (Object Oriented Programming)
Java ile Nesneye Yönelik Programlama (Object Oriented Programming) Giriş Yrd. Doç. Dr. Aybars UĞUR Örnek 1 Bir Yolcu sınıfı, yolcu1 nesnesi oluşturulması ve kullanılması class Yolcu String ad; String soyad;
DetaylıYZM311 YAZILIM YAPIMI BÖLÜM 4 TASARIM KALIPLARI. Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi
YZM311 YAZILIM YAPIMI BÖLÜM 4 TASARIM KALIPLARI Yrd. Doç. Dr. Volkan TUNALI Mühendislik ve Doğa Bilimleri Fakültesi / Maltepe Üniversitesi Giriş 2 Tasarım Kalıpları (Design Patterns) Yaratımsal (Creational)
DetaylıGörsel Programlama DERS 07. Görsel Programlama - Ders07/ 1
Görsel Programlama DERS 07 Görsel Programlama - Ders07/ 1 KULLANICI ARAYÜZÜ GELİŞTİRME Kullanıcı arayüzleri (GUI-Graphical User Interface) kullanıcının işletim sisteminin pencere yöneticisinde görebildiği,
Detaylıİçindekiler. Okuma lisansı info acar, için verilmiştir. Çoğaltılması ve dağıtılması yasaktır.
18 İçindekiler Lütfen Dikkatle Okuyunuz! Yasal Uyarı Bölüm Başlıkları Önsöz Kitabın İçeriği Nedir? Kitabın İçeriği Ne Degildir? Kitap Kim İçin Yazıldı? Yazar Hakkında Kitap Nasıl Okunmalı? Yazar İle İletişim
DetaylıMOBİL UYGULAMA GELİŞTİRME
MOBİL UYGULAMA GELİŞTİRME Hedefler Bu üniteyi çalıştıktan sonra; Java programlama dilinde görsel arayüz tasarımı yapabilir, Java programlama dilinde görsel bileşenler üzerinde olay tanımlayabilir. Android
DetaylıMVP, Observer ve Mediator Örüntüleri ile Yeniden Kullanılabilir Uygulama Bileşenleri Geliştirme
MVP, Observer ve Mediator Örüntüleri ile Yeniden Kullanılabilir Uygulama Bileşenleri Geliştirme Kenan Sevindik Kimdir? 1999 ODTÜ Bilgisayar Müh. mezunu 15 yılın üzerinde kurumsal uygulama geliştirme deneyimi
DetaylıJava da. ve AWT ve SWING Kütüphaneleri. BBS-515 Nesneye Yönelik Programlama. Ders #8 (9 Aralık 2009)
Java da Applet ler ler (...devam) ve AWT ve SWING Kütüphaneleri BBS-515 Nesneye Yönelik Programlama Ders #8 (9 Aralık 2009) İçerikç Geçen ders: Java da İstemci Tarafı Uygulamalar ( Applets ) Örnekler Bu
Detaylı.com. Özcan Acar 2009 Kurumsal Java.com
.com Spring MVC Özcan Acar acar@unitedinter.net http://www.ozcanacar.com http://www.kurumsaljava.com Özcan Acar Hakkında public class OezcanAcar { public static void main(string[] args) { Acar oezcan =
DetaylıJava C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.
Ders İçeriği An introduction to Object-oriented programming with Java Third Edition Update Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Nesneye Yönelik Öğr.
DetaylıGörsel Programlama DERS 03. Görsel Programlama - Ders03/ 1
Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit
DetaylıJava da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )
Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts
Detaylı1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.
1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result
DetaylıNesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.
Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir
DetaylıJComponent in alt sınıfları
JAVA SWING Javax.Swing paketi Java Foundation Classes (JFC) kütüphanesi içindedir. 134 sınıfı olan, 25 arayüz kılgılayan büyük bir pakettir. Java.AWT (Java Abstract Window Toolkit) paketinin üzerine kuruludur
DetaylıGörsel Programlama DERS 08. Görsel Programlama - Ders08/ 1
Görsel Programlama DERS 08 Görsel Programlama - Ders08/ 1 Java da Olay Yönetimi (Event Handling) Program çalışırken kullanıcı tarafından gerçekleştirilen tüm hareketlere olay(event) denilir. Kullanıcının
DetaylıKUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR
KUYRUKLAR QUEUES Doç. Dr. Aybars UĞUR Giriş Bu bölümde gerçek yaşamdaki kuyrukların bilgisayardaki gösterimleri üzerinde durulacaktır. Kuyruklar, eleman eklemelerin sondan (rear) ve eleman çıkarmaların
DetaylıClient Server Database
Java Server Faces Ahmet Demirelli Sabancı Üniversitesi 2007 Ajanda Model-1 Mimari Model-2 Mimari MVC Framework Java Server Faces Örnek Uygulama Model 1 Mimari 1 2 3 6 JSP (View) 5 JavaBeans (Model) 4 Client
DetaylıInterface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator
Interface Comparator java.util Interface Comparator Kılgılayan sınıf: Collator Bildirimi: public interface Comparator Comparator arayüzü Java Collections Framework un bir üyesidir. Bir nesneler koleksiyonu
DetaylıMVP ve Mediator ile Loose Coupled, Modüler UI Geliştirme
MVP ve Mediator ile Loose Coupled, Modüler UI Geliştirme Hakkımızda Kenan Sevindik, 1999 ODTÜ mezunu 15 yıllık kurumsal uygulama geliştirme tecrübesine sahip Uzmanlık ve ilgi alanları Kurumsal uygulama
DetaylıBilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN
Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı Öğr. Gör. Cansu AYVAZ GÜVEN NESNE TABANLI PROGRAMLAMA Java - AWT JAVA AWT AWT Abstract Windowing Toolkit (Soyut Pencereleme Araçtakımı)
DetaylıFacade (Cephe) Tasarım Şablonu KurumsalJava.com
Facade (Cephe) Tasarım Şablonu KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Profesyonel yazılım sistemleri birçok komponentin birleşiminden oluşur. Yazılım esnasında bir çok
DetaylıChain of Responsibility Tasarım Şablonu KurumsalJava.com
Chain of Responsibility Tasarım Şablonu KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Chain of responsibility sorumluluk zinciri anlamına gelmektedir. Sisteme gönderilen bir
DetaylıBölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:
Bölüm 24 Java Ağ Uygulamaları 24.1 Java Appletleri Applet, Web tarayıcısında çalışan bir Java programıdır. Bir applet, Java uygulaması için tamamen fonskiyonel olabilir çünkü bütün Java API ye sahiptir.
DetaylıVeri Yapıları ve Algoritmalar 2006-2007 2.dönem
Veri Yapıları ve Algoritmalar 2006-2007 2.dönem Öğretim Elemanları: Dr. A. Şima Etaner-Uyar Dr. Gülşen Cebiroğlu-Eryiğit Dersle ilgili bilgiler Ders Kitabı Data Structures and Algorithms in Java, 4th Ed.,
DetaylıMVC, MVP ve Mediator ile TDD Tecrübeleri. Kenan SEVİNDİK
MVC, MVP ve Mediator ile TDD Tecrübeleri Kenan SEVİNDİK Mimarisel Bir Örüntü: MVC Controller Veri değişiklikleri Kullanıcı girdileri ve UI olayları Bildirimler Model View Veri erişimi MVC'nin Amacı Trygve
DetaylıHESAP MAKİNASI YAPIMI
HESAP MAKİNASI YAPIMI 1..Aşağıdakine benzer görünüm ve butonları hazırlayın. 2. 24. Butonun içerisine aşağıdaki kodları yazın. 3. Yeni bir layer ekleyip Frame1 F9 na aşağıdaki kodları ekleyelim. 4. Butonlardan
Detaylı.com. Kurumsal Java. Özcan Acar 2009. com
. urumsal J Java ile Yüksek Performanslı Web Platformları Özcan Acar acar@unitedinter.net http://www.ozcanacar. http://www.kurumsalj urumsal Özcan Acar Hakkında public class OezcanAcar { public static
DetaylıBurak Kıymaz 13.10.2015 JAVA FX
JavaFx neden çıktı? JAVA FX Eskiden desktop için swing kullanılırdı fakat pek iyi değildi. Javafx bu konuda css kullanmaya da izin verdiği için daha iyi bulundu. xml veriyi biçimlendirmek için kullanılan
DetaylıMOBİL UYGULAMA GELİŞTİRME
MOBİL UYGULAMA GELİŞTİRME Hedefler Bu üniteyi çalıştıktan sonra; Layout çeşitlerinin ve aralarındaki farkları açıklayabilir, Android projesinde farklı Laoyut kullanabilir, Android projesinde TextView,
DetaylıYZM 2108 Yazılım Mimarisi ve Tasarımı
YZM 2108 Yazılım Mimarisi ve Tasarımı Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 3 Tasarım Kalıpları Bu bölümde; Anti-Patternler
DetaylıVirtualmin'e Yeni Web Sitesi Host Etmek - Domain Eklemek
Yeni bir web sitesi tanımlamak, FTP ve Email ayarlarını ayarlamak için yapılması gerekenler Öncelikle Sol Menüden Create Virtual Server(Burdaki Virtual server ifadesi sizi yanıltmasın Reseller gibi düşünün
DetaylıNESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10. Yrd.Doç.Dr.Hacer Karacan
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10 Yrd.Doç.Dr.Hacer Karacan İçerik Grafik Kullanıcı Arayüzü Uygulamaları AWT, Swing Arayüz Yerleşim Düzeni Temel GKA Bileşenleri Olay Yönetimi Olay Dinleyiciler Olay
Detaylıpublic class SalesLineItem // Java { private int quantity; private ProductSpecification description; public Money getsubtotal() {...
Kodlama Sınıf tanımları yazılım sınıflarının diyagramlarından yararlanılarak oluşturulur. Karmaşık veri tiplerine (örneğin sınıf) sahip üyeler referans ya da işaretçi olarak yaratılmalılar. Basit nitelik
DetaylıAndroid Ders Notları
Android Ders Notları 1. Yeni Bir Proje Başlatma Android Studio programında yeni bir proje başlatıyoruz. İlk olarak karşımıza resim 1 deki gibi bir pencere gelecek. Burada Application name kısmına proje
DetaylıÜst Düzey Programlama
Üst Düzey Programlama Tasarım Şablonları Üst Düzey Programlama-ders03/ 1 Chain-Of-Responsibility ŞABLONU Bu şablon; bir dizi sınıfın, gönderilmiş olan isteğine yanıt vermesini sağlar. Bu nesneler farklı
DetaylıClass LinkedHashMap. Class LinkedHashMap java.lang.object java.util.abstractmap java.util.hashmap java.util.linkedhashmap. Kılgıladığı arayüzler:
Class LinkedHashMap java.util Class LinkedHashMap java.lang.object java.util.abstractmap java.util.hashmap java.util.linkedhashmap Kılgıladığı arayüzler: Cloneable, Map, Serializable Bildirimi: public
DetaylıBölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler
Bölüm 6 Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler Chapter 6 Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Genel Bakış Dizi: Hepsi aynı türde
DetaylıArrayList Uygulamaları
ArrayList Uygulamaları Aşağıdaki program önce boş bir ArrayList yaratıyor. Sonra sırasıyla şu işleri yapıyor: Listenin boş olup olmadığını yaz. Ambara üç tane öğe ekle. İndisi 2 olan yere bir öğe sokuştur.
DetaylıSınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi
Görsel Programlama Metot Yeniden Tanımlama, Metot Aşırı Yükleme, Dinamik Metot Yükleme, Soyut Sınıflar, Soyut Metotlar, Arayüzler, Çoklu Kalıtım, Anonim Sınıflar ve java.lang.object Sınıflar Programcı
DetaylıSpring Framework Eğitimi
Hazırlayan: Barış Dere @BarisDere baris.dere@gmail.com Spring Framework Eğitimi Ders 2: Http://www.youtube.com/barisdere Ders içeriği Spring IoC container tanıtımı Spring IoC container çalışma şekli Metadata
DetaylıYZM 2116 Veri Yapıları
YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 5 Kuyruk VY ve ADT Basit Kuyruk (Simple Queue)
DetaylıORNEK 1: Tarım Makinaları ve Teknolojileri Mühendisliği başlıklı çerçeve üretme.
ORNEK 1: Tarım Makinaları ve Teknolojileri Mühendisliği başlıklı çerçeve üretme. YERLEŞİM PLANI DÜZENLEYİCİLERİ (LAYOUT MANAGERS) Bir çerçeve veya pano içerisine bileşenler (butonlar, checkboxlar, vs )
DetaylıMOBİL UYGULAMA GELİŞTİRME
MOBİL UYGULAMA GELİŞTİRME Hedefler Bu üniteyi çalıştıktan sonra; BaseAdapter yapısından miras alabilir, ListView bileşenine özel layout ve adapter oluşturabilir, WebView bileşenini kullanarak web sayfalarını
DetaylıUpgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals
The European Union s Making the Labour Market more Inclusive III programme For North Cyprus Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals Module
DetaylıCahit GÜNGÖR Hacettepe Üniversitesi Bilişim Enstitüsü. Sorumluluk Zinciri. Kod Üretme (Code Generation)
Cahit GÜNGÖR Hacettepe Üniversitesi Bilişim Enstitüsü Sorumluluk Zinciri (Chain of Responsibility) Yazılım Mimarileri Kod Üretme (Code Generation) Anahatlar Tanım Örüntünün Amacı Ne zaman Gerçekleştiririz?
DetaylıDecorator Tasarım Şablonu
Decorator Tasarım Şablonu KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com http://www.javadergisi.com Mevcut bir sınıf hiyerarşisini ya da sınıfın yapısını değiştirmeden, oluşturulan
DetaylıĐlgili konular: Collection, Set, HashSet, Comparable, Comparator, TreeMap, Collections.synchronizedSortedSet(SortedSet), Serialized Form
Class TreeSet java.util Class TreeSet java.lang.object java.util.abstractcollection java.util.abstractset java.util.treeset Kılgıladığı arayüzler: Cloneable, Collection, Serializable, Set, SortedSet Bildirimi:
DetaylıJava Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR
Java Programlama Dilinde Veri Tipleri Yrd. Doç. Dr. Aybars UĞUR Metoda Temel Veri Tipi Gönderme Java daki 8 Temel veri tipi (boolean, char, byte, short, int, long, float, double). public class OrnekTemelTip
DetaylıKitapta UML diyagramları kullanılarak, tasarım şablonları görsel olarak açıklanmıştır. İçerik aşağıdaki bölümlerden oluşmaktadır:
23 Önsöz Bu kitapta profesyonel yazılım için vazgeçilmez olan tasarım şablonlarını (design pa erns) tematize etmek istedim. Çalıştığım birçok projede görevim mevcut sistemlere yeni fonksiyonlar eklemekti.
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Kodlarına Yorum Satırı Eklemek Java Paket Kavramı Java Kütüphane Kavramı Konsoldan Veri Çıkışı ve JOPtionPane Kütüphanesi JOptionPane Kütüphanesi Kullanarak
DetaylıŞablon Türler (Generics)
Şablon Türler (Generics) CLR 1.0 da çalışma zamanında belli olmayan sınıfları kullanan esnek sınıf ve metotlar, Object sınıfı temel alınarak oluşturulması gerekmekteydi. CLR 2.0 dan itibaren Generic lerin
DetaylıBİL-141 Bilgisayar Programlama I (Java)
1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,
DetaylıJavaFX Temelleri (1)
JavaFX Temelleri (1) Sahne Çizelgesi (Scene Graph), Yerleşim Panoları (Layout Panes), Uygulama Soyut Sınıfı ve İskeleti, Uygulama Sahnesi (Application Scene), GUI Olayları (GUI Events), Olay İşleme (Event
DetaylıÜst Düzey Programlama
Üst Düzey Programlama Tasarım Şablonları Üst Düzey Programlama-ders01/ 1 Tasarım Şablonları (Design Patterns) Şablon bir işi yapmak için bir yoldur. Yemek yaparken kullanılan tariflerde birer şablondur.
DetaylıİÇİNDEKİLER VII İÇİNDEKİLER
İÇİNDEKİLER VII İÇİNDEKİLER 1 JAVA 8 NEDİR? 1 Java Nasıl Çalışır? 3 HOTSPOT Teknolojisi Nedir? 5 Çöp Toplayıcı (GarbageCollector) Nedir? 5 Jar Nedir? 6 Java Geliştirme Ortamı 7 Açıklama Satırıları 8 Nesnel
DetaylıClass PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.
Class PriorityQueue java.util Class PriorityQueue java.lang.object java.util.abstractcollection java.util.abstractqueue java.util.priorityqueue Parametre tipleri: E - the type of elements held
DetaylıJava EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.
1 Apache Struts Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür. Kullanıcılara MVC mimarisini benimsetmek için Java Servlet API sini kullanıyor. Model-View-Controller
DetaylıJavaFX Temelleri (2)
JavaFX Temelleri (2) Araç İpuçları (Tooltips), Yazı Tipleri (Fonts), Çalışma Ortamları ve Dağıtım Oluşturma, JavaFX Özellikleri (JavaFX Properties), Gözlenebilirlik (Observability), Bağlanımlar (Bindings)
DetaylıMAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş
MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101
DetaylıHB2001: JAVA PROGRAMLAMA (32 saat)
Sayfa: 1 / 7 HB2001: JAVA PROGRAMLAMA (32 saat) Eğitimin Amacı Bu eğitim Java programlama dilinin özelliklerini öğretmeyi amaçlar. Java programlamaya girişle başlayan eğitim, object-oriented programming
DetaylıGörsel Programlama (Visual Programming) 2.Hafta
Görsel Programlama (Visual Programming) 2.Hafta 2016-2017 Bahar Dönemi Class Yapısı ve Form 1Muhammer İLKUÇAR, MAKÜ-2015 BURDUR Class - Obje Nesne (Nesne tabanlı programlama) İnsan ırkının ortak özelliklerini
Detaylıabstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;
abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance
DetaylıMOBİL UYGULAMA GELİŞTİRME
MOBİL UYGULAMA GELİŞTİRME Hedefler Bu üniteyi çalıştıktan sonra; Android projesi oluşturabilir, Android projesini çalıştırabilir, Android projesi genel yapısını açıklayabilir, Activity kavramını açıklayabilir,
DetaylıİNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ
İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ AD SOYAD: TESLİM TARİHİ: OKUL NO: TESLİM SÜRESİ: 2 hafta ÖDEV NO: 5 1- BANKA
DetaylıBİL-142 Bilgisayar Programlama II
BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri
DetaylıNESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM
NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM 2014) //Class (Sınıf) // Sınıf (class) soyut veri tipidir. // Nesne (object) sınıfın somutlaşan bir cismidir. // static : nesnesi oluşturulmaz.
DetaylıGörsel Programlama DERS 02. Görsel Programlama - Ders02/ 1
Görsel Programlama DERS 02 Görsel Programlama - Ders02/ 1 Kodun Tekrar Kullanımı ve Kalıtım(Inheritance) Nesneye yönelik programlamanın diğer programlama paradigmalarına karşı bir avantajı kodun yeniden
DetaylıVeritabanı İşlemleri
Veritabanı İşlemleri Bu bölümde; Veritabanı bağlantısı Komutların Yürütülmesi ADO.NET Nesne Modeli kavramları incelenecektir. ADO.NET (ActiveX Data Objects) ADO.NET, var olan Windows API lerinden çok daha
DetaylıBusiness Delegate Tasarım Şablonu KurumsalJava.com
Business Delegate Tasarım Şablonu KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Modern yazılım sistemleri birden fazla katmandan oluşur. Bu katmanlar her zaman aynı server üzerinde
DetaylıBM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü
BM-209 Nesne Yönelimli Programlama Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü Java Programlama Dili Java bayt kodları Java Sanal Makineleri üzerinde
DetaylıHaz. Yrd.Doç.Dr. Yunus Emre Selçuk
NESNEYE DAYALI TASARIM VE MODELLEME KISIM 1: TASARIM KALIPLARI 1.3. 1 CHAIN OF RESPONSIBILITY: Amaç: Birbirleri ile ilişkili bir nesneler zinciri veya hiyerarşisindeki bir nesnenin, aldığı bir mesajı işleyemeyeceği
DetaylıTemel JavaFX Bileşenleri (1) Labeled, Label, Button, ToggleButton, RadioButton, ToggleGroup, CheckBox, ComboBox, Slider, ListView ve SelectionModel
Temel JavaFX Bileşenleri (1) Labeled, Label, Button, ToggleButton, RadioButton, ToggleGroup, CheckBox, ComboBox, Slider, ListView ve SelectionModel JavaFX Nodları javafx.scene.node: sahneye eklenebilen
DetaylıUYGULA İÇİ SATIN ALMA. <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="com.android.vending.
UYGULA İÇİ SATIN ALMA In-app Billing Android Uygulama ya Entegre Etmek. Manifest Ayarı
DetaylıCENG 217 nesne tabanlı dizayn. Doç. Dr. Halûk Gümüşkaya haluk@gumuskaya.com / haluk@fatih.edu.tr http://www.gumuskaya.com
CENG 217 nesne tabanlı dizayn ders 2 Doç. Dr. Halûk Gümüşkaya haluk@gumuskaya.com / haluk@fatih.edu.tr http://www.gumuskaya.com Computing Engineering Department Fatih University Friday, December 02, 2005
DetaylıIntercepting Filter Tasarım Şablonu KurumsalJava.com
Intercepting Filter Tasarım Şablonu KurumsalJava.com Özcan Acar Bilgisayar Mühendisi http://www.ozcanacar.com Front Controller 1 tasarım şablonunda, kullanıcıdan gelen isteklerin (request) merkezi bir
DetaylıÜst Düzey Programlama
Üst Düzey Programlama JSP Üst Düzey Programlama-ders04/ 1 JSP JSP durağan HTML ile dinamik oluşturulan içeriği birleştirmeyi sağlar. Bir web sayfası tasarlama programı ile web sayfasını tasarlar daha sonra
DetaylıBİL132 Bilgisayar Programlama II
BİL132 Bilgisayar Programlama II 8. Olağandışı durumlar (exceptions) Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yüksel Tarhan Olağandışı durum Kütük bulunamadı Diskte yer kalmadı Nesne referans
DetaylıTasarım Modelinin (Design Model) Oluşturulması
1 Tasarım Modelinin (Design Model) Oluşturulması Bu aşamada, nesneye dayalı yönteme göre problemin mantıksal çözümü oluşturulur. Tasarım modelinde yazılım sınıfları ve aralarındaki işbirliği (etkileşim)
DetaylıI Java Veri Yapıları 1
İçindekiler Önsöz xix I Java Veri Yapıları 1 1 Giriş 3 1.1 Veri Nedir?............................... 3 1.2 Algoritma Nedir?............................ 4 1.3 Veri Yapıları..............................
DetaylıTÜMLEŞİK MODELLEME DİLİ. UML (Unified Modeling Language)
TÜMLEŞİK MODELLEME DİLİ UML (Unified Modeling Language) UML NEDİR? Yazılım ve donanımların bir arada düşünülmesi gereken, Zor ve karmaşık programların, Özellikle birden fazla yazılımcı tarafından kodlanacağı
Detaylı8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr
8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II Öğr.Gör. Hakan YILMAZ hakanyilmaz@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi 2 İçindekiler QUERYSTRING KOLEKSIYONU... 3 FORM
Detaylı1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5
İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5 2 VISUAL STUDIO GELİŞTİRME
DetaylıÖzcan Acar 2010 Kurumsal Java Akademisi.com
Özcan Acar 2010 Kurumsal Java Akademisi.com Nasıl Uzman Yazılımcı Olunur? Özcan Acar acar@unitedinter.net http://www.ozcanacar.com http://www.kurumsaljava.com Özcan Acar Özcan 2010 Kurumsal Acar 2009 Java
DetaylıYığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.
Stack Sınıfı (yığıt) java.util Class Stack java.lang.object java.util.abstractcollection java.util.abstractlist java.util.vector java.util.stack Stack (yığıt) sınıfı nesnelerin LIFO (last-input-first-output)
DetaylıSeri kablo bağlantısında Windows95/98/ME'ten Windows 2000'e bağlantı Windows95/98/ME - NT4 bağlantısına çok benzer.
Seri kablo bağlantısında Windows95/98/ME'ten Windows 2000'e bağlantı Windows95/98/ME NT4 bağlantısına çok benzer. Direkt Kablo desteğini Windows95/98'e yükledikten sonra, Windows95 for Direct Cable Client
DetaylıJavaServerFaces. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu
JavaServerFaces Ahmet Demirelli SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu Sabancı Üniversitesi Bilişim Teknolojileri Yüksek Lisans Programı Seminerleri 2008 Hakkımızda SabancıÜniversitesi BT Yüksek
DetaylıKarabük Üniversitesi, Mühendislik Fakültesi...www.ibrahimcayiroglu.com WEB TEKNOLOJİLERİ
WEB TEKNOLOJİLERİ VISUAL STUDIO DA YENİ BİR PROJE OLUŞTURMA Visual Studio (VS) programını çalıştırdığımızda karşımıza boş bir ekran gelir. Yeni bir proje oluştururken File>New>Project yolu kullanılarak
DetaylıÜst Düzey Programlama
Üst Düzey Programlama Servlet Üst Düzey Programlama-ders01/ 1 Servlet Nedir? Web sayfaları ilk başlarda durağan bir yapıya sahipti ve kullanıcıdan bilgi alarak işlemler yapmıyordu. Zamanın geçmesiyle kullanıcıya
DetaylıArayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.
Bölüm 20 20 Arayüzler Arayüz bir sınıf değildir. Arayüz yazmak sınf yazmaya çok benzer ancak ikisi birbirinden farklı konseptlerdir. Sınıf bir nesnenin özelliklerini ve davranışlarını belirtirken; bir
DetaylıJava Programlama Giriş
Java Programlama Giriş 2013-2014 Bahar Dönemi Mehmet Akif Ersoy Üniversitesi Teknik Bilimler Meslek Yüksekokulu Burdur 2014 Muhammer İLKUÇAR 1 Neden Java Programlama Platformdan bağımsızdır
DetaylıBMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler
BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin
DetaylıProgress Barlı, FTP Dosya Upload Appleti
FTP ile dosya etmek kolay ancak bunu bir progressbar (yükleniyor barı) ile yapmak biraz karışık olabilir. Bir kaç java class yapısı kullanarak yazmak daha sonra bu klasları başka yerdede kullanabilmenize
DetaylıProgramlama Dillerinde Kullanılan Veri Tipleri
Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs
DetaylıJava dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.
PART 5 5. Denetleyici Türleri Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir. Java Erişim Kontrol Denetleyicileri (Access Control Modifiers) Erişim Harici Denetleyiciler
DetaylıIDENTITY MANAGEMENT FOR EXTERNAL USERS
1/11 Sürüm Numarası Değişiklik Tarihi Değişikliği Yapan Erman Ulusoy Açıklama İlk Sürüm IDENTITY MANAGEMENT FOR EXTERNAL USERS You can connect EXTERNAL Identity Management System (IDM) with https://selfservice.tai.com.tr/
DetaylıTasarım Örnekleri. Senaryoların Gerçeklenmesi (Use-Case Realization)
Senaryoların Gerçeklenmesi (Use-Case Realization) Bu bölümde; senaryoların birbirleriyle etkileşimde olan (işbirliği yapan) yazılım sınıfları ve nesneler şeklinde nasıl tasarlanacağı ele alınacaktır. Bu
Detaylı/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/
Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void
DetaylıYazılım Kodlama ve İ simlendirme Standartları v1.0
Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.
Detaylı