Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals



Benzer belgeler
Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

BİL132 Bilgisayar Programlama II

Laboratuar Notları #5

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 8. Yrd.Doç.Dr.Hacer Karacan

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

Laboratuar Notları #3

Cybersoft Bilişim Teknolojileri Sunucu Tarafı Programlaması Kursu Final soruları. Tarih: 27 Kasım 2010 Saat: 13:30 Süre: 3 saat

Laboratuar Notları #8

Laboratuar Notları #7

// hataları işaret eden referans

BİL-141 Bilgisayar Programlama I (Java)

Progress Barlı, FTP Dosya Upload Appleti

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.

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals. Module 2:Server Side Internet Programming

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 10

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 18: Formatlı Grafik Kullanıcı Arayüzü Oluşturma

İçerik. Temel Kavramlar. Nesne Nedir? 1. Nesne : Örnek. Nesne Nedir? 2. Geçen hafta: Bu hafta: BBS-515 Nesneye Yönelik Programlama

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Temel Kavramlar BBS-515 Nesneye Yönelik Programlama

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

HSancak Nesne Tabanlı Programlama I Ders Notları

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

İstisnalar (Exceptions) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 8 1

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Laboratuar Notları #5

Java Class Yapısında Finalize Metotunun Kullanımı

Sınav Dağılım & IMKB Endeks

D İ Z İ L E R A R R A Y S

Yazılım Kodlama ve İ simlendirme Standartları v1.0

HATA YAKALAMAK VE AYIKLAMAK GİRİŞ HATA AYIKLAMA. Hata Yakalamak ve Ayıklamak

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

Sunum İçeriği. Programlamaya Giriş

Business Delegate Tasarım Şablonu KurumsalJava.com

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

Chain of Responsibility Tasarım Şablonu KurumsalJava.com


while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

CharArrayReader. Kılgıladığı Arayüzler: Bildirimi: Değişkenleri (fields): java.io.reader Sınıfından Kalıtsal Gelen Değişken:

1 - Button Kontrolu Nasıl Yapılır?

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Java: Sayıları Biçemli Yazma

Dizi ( Array ) ve Dizgi ( String )

Görsel Programlama 1

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Intercepting Filter Tasarım Şablonu KurumsalJava.com

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Liskov Substitution Principle (LSP) Liskov un Yerine Gecme Prensibi KurumsalJava.com

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals. Module 3: Cloud Computing. Laboratuar Notları

Diziler İndisli Değişkenler

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

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.

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Java da Program Denetimi ve Operatörler

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

Veri Yapıları ve Algoritmalar dönem

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

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

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

HSancak Nesne Tabanlı Programlama I Ders Notları

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Burak Kıymaz JAVA FX

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

Alıştırmalar 2 - Dağıtık Sistemler. Alıştırma 2. Prof. Dr. Th. Letschert Çeviri: Turgay Akbaş FB MNI 16. Mai 2013

1. LabVIEW ile Programlama

İÇİNDEKİLER VII İÇİNDEKİLER

5. Bölüm Sıra Dışı Durum Yönetimi (Exception Handling) Java ile Nesne Merkezli ve Fonksiyonel Programlama

JAVA DA İSTİSNALAR VE DOSYA İŞLEMLERİ. Yrd. Doç.Dr. İlhan AYDIN

Matematiksel Operatörler

#include <stdio.h> int main(void) { float sayi; float * p; p = &sayi; printf("deger girin:"); scanf("%f", p); printf("girilen deger:%f\n", *p);

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

ByteArrayOutputStream

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

İ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İ

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Calistir diye normal bir java classı ekleyelim.aynı pakete ekleyelim.public ve main metodu ekleyelim.

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Java, java.util paketi içinde mevcut olan Date sınıfını sağlar, bu sınıf güncel tarih ve zamanı kapsüllemektedir.

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

Java da. ve AWT ve SWING Kütüphaneleri. BBS-515 Nesneye Yönelik Programlama. Ders #8 (9 Aralık 2009)

YZM 2116 Veri Yapıları

Transkript:

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 2:Server Side Internet Programming Modül 2: Sunucu Tarafı Internet Programlaması Laboratuar Notları A project implemented by CyberSoft Bilişim Teknolojileri Ltd. This project is funded by European Union. The contents of this publication are the sole responsibility of Cybersoft Bilişim Teknolojileri Ltd. and can in no way be taken to reflect the views of the European Union.

İçerik Bölüm 6: Hata Yakalama...2 Çalışma 1: Komplex Sayılar.......6 Çalışma 2: Zaman...... 9 1

1. Hata Yakalama (Exception Handling) Java da error adı verilen hatalar meydana geldiğinde program akışı doğrudan sonlandırılmaktadır. Ancak bazen, aslında derleme sırasında hata olduğu belli olmayan ancak çalısma zamanı sırasında yapılan hatalı işlemler neticesinde ortaya çıkan hatalar olabilir. 1.1 Çalısma zamanı sırasında meydana gelen hatalar Mesela program içerisinde x/a gibi bir ifade olduğunu varsayalım. Bu durumda program derlenirken, bu ifade hatalı olarak algılanmaz. Ancak program çalısırken a değiskenine 0 değeri atanırsa bu ifade matematiksel olarak sonsuz anlamına gelir ve bu da başka bir hata üretilmesine neden olur. İşte bu tür hatalara error değil exception adı verilir.exception ele alınabilir ama error alınamaz. Exception ile error kavramları sadece tanım olarak değil, nitelik olarak da farklıdır. Çünkü java da exception lar runtime sırasında yakalanabilir. Ancak error olduğu zaman bu durum kesinlikle programın çalışmasını sonlandırır. Exception ların ele alınması Exception, programda bazı özel bloklar içerisinde ele alınır. Programın çalısması sırasında bir exception olursa hemen o anda bir Exception nesnesi yaratılır. Bu nesne, aslında Exception nesnesinden türemiş bir başka exception da olabilir. Ama neticede en temel anlamda bir Exception nesnesi yaratılır. Çalışma zamanı sırasında üretilen exception lar ele alınabilir Daha sonra eğer programcı tercih etmişse bu exception nesnesi özel bir blok tarafından yakalanır ve yine aynı bloklar içerisinde programcının istedigi kodları çalıstırır. try openfile(); readfile(); closefile(); catch(exception e) dosomething(); Yukarıda da görüldügü gibi aslında exception ların yakalanma prensibi, exception olma ihtimali olan satırların bir try bloğu içerisinde yazılması ve meydana gelen exception ı yakalayacak bir catch bloğunun da hemen bu try bloklarının sonuna yerleştirilmesi şeklindedir. Exception lar Es Geçilemez Exception lar üretildiği anda programcı tarafından ele alınmazsa program exception ile birlikte sonlanır. Bu nedenle bir exception ele alınmadan program akışına devam edilemez. 1.2 Kontrol edilen ve Kontrol Edilmeyen Exception lar Aslında Exception lar kontrol edilen ve kontrol edilmeyen olmak üzere 2 ye ayrılır. Çalısma zamanı sırasında meydana gelen bazı exceptionların kontrol edilmesi pogramcının isteğine bağlıdır. Bu tip exception lar RunTimeException nesnesinden türemişlerdir. Programcı bu exceptionları ele almazsa program bir hata mesajı ile sonlanır. Ya da programcının ele aldığı şekilde akışına devam eder. (dizi indeksinin geçilmesi, sıfıra bölme hatası ) Kontrol edilen exceptionların ele alınması prgoramcının isteğine bağlı degildir. Bu exception ların ele alınması zorunludur. Mesela bir dosyanın açılması okunması ya da kapanması işlemleri kontrol edien exceptionlardır. Bu tür exception lar programcının hatasından kaynaklanmayan exception lardır (Bozuk bir dosya ya da URL) 2

NOT: Aslında bütün exception lar Throwable nesnesinden türemiştir. 3

Çalışma 1: Dizi Elemanlarına Ulaşma Aşağıda verilen program şablonu hatasız çalışan bir Java programıdır. Ancak programdaki bir veya birden fazla anahtar satırları açıklama satırlarıyla değiştirilmiştir. Problem tanımını okuyun ve örnek sonucu inceleyin; daha sonra da şablon kod üzerinde çalışın. Problem çözme ipuçları nı kullanarak /* */ gösterilen açıklama satırlarını Java koduyla değiştirin. Programınızı derleyin ve çalıştırın. Bulduğunuz sonucu örnek sonuçla karşılaştırın. 1.1 Dizi Elemanlarına Ulaşma Çalışmasının Amacı Bu çalışmada şu konular incelenecektir: Girilen input değerinin uygunluğunun test edilmesi Hata-toleranslı program yazmak Kendi exception tipini yaratıp, bu tipde exceptionlar throw etme 1.2 Dizi Elemanlarına Ulaşma Çalışmasının Problem Tanımı Kullanıcını, 10 elemanlı integer tipinde bir diziye input girip, dizi içerisinde arama yapabilmesini sağlayan bir program yazınız. Program kullanıcının dizi içerisindeki değerleri indeksi ile alabilmesini veya dizide girilen input değerinin nereye yerleştirileceğine karar verebilmesini sağlamalıdır. Eğer girilen input değerlerinde bir sorun varsa veya diziye ulaşmada sorun yaşanılırsa, program exception vermelidir. 1. Eğer aranılan değer dizide bulunamıyorsa, NumberNotFoundException isimi exception throw edilmelidir. 2. Eğer istenilen değer dizi sınırları dışındaysa, ArrayIndexOutOfBoundsException yakalanıp (catch), ekrana uygun bir mesaj yazılmalıdır. 3. Eğer istenilen değer diziye daha eklenmemişse, program ArrayIndexOutOfBoundsException throw etmelidir. 1.3 Dizi Elemanlarına Ulaşma Çalışmasının Örnek Program Çıktısı 4

1.4 Dizi Elemanlarına Ulaşma Çalışmasının Program Şablonu // NumberNotFoundException.java public class NumberNotFoundException extends Exception public NumberNotFoundException() super( "Number not found in array" ); public NumberNotFoundException( String message ) super( message ); // end class NumberNotFoundException Şekil 1.1 NumberNotFoundException.java // ArrayAccess.java import java.awt.flowlayout; import java.awt.gridlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jtextfield; public class ArrayAccess extends JFrame private JTextField inputfield; 5

private JTextField retrievefield1; private JTextField retrievefield2; private JTextField outputfield; private JPanel inputarea; private JPanel retrievearea; private JPanel outputarea; private int num; private int index = 0; private int array[] = new int[ 10 ]; private String result; // set up GUI public ArrayAccess() super( "Accessing Array values" ); setlayout( new FlowLayout() ); // set up input Panel inputarea = new JPanel(); inputarea.add( new JLabel( "Enter array elements here" ) ); inputfield = new JTextField( 10 ); inputarea.add( inputfield ); inputfield.addactionlistener( new ActionListener() public void actionperformed( ActionEvent e ) /* Create a try block in which the application reads the number entered in the inputfield and assigns it to the next index in the array, then increments instance variable index. */ /* Write catch handlers that catch the two types of exceptions that the previous try block might throw (NumberFormatException and ArrayIndexOutOfBoundsException), and display appropriate messages in error message dialogs. */ inputfield.settext( "" ); // end method actionperformed // end anonymous inner class ); // end call to addactionlistener // set up retrieve Panel retrievearea = new JPanel( new GridLayout( 2, 2 ) ); retrievearea.add( new JLabel( "Enter number to retrieve" ) ); retrievefield1 = new JTextField( 10 ); retrievearea.add( retrievefield1 ); retrievefield1.addactionlistener( new ActionListener() 6

public void actionperformed( ActionEvent event ) /* Create a try block in which the application reads from retrievefield1 the number the user wants to find in the array, then searches the current array contents for the number. If the number is found, the outputfield should display all the indices in which the number was found. If the number is not found, a NumberNotFoundException should be thrown. */ /* Write catch handlers that catch the two types of exceptions that the try block might throw (NumberFormatException and NumberNotFoundException), and display appropriate messages in error message dialogs. */ retrievefield1.settext( "" ); // end method actionperformed // end anonymous inner class ); // end call to addactionlistener retrievearea.add( new JLabel( "Enter index to retrieve" ) ); retrievefield2 = new JTextField( 10 ); retrievearea.add( retrievefield2 ); retrievefield2.addactionlistener( new ActionListener() public void actionperformed( ActionEvent event ) /* Create a try block in which the application reads from retrievefield2 the index of a value in the array, then displays the value at that index in the outputfield. If the index input by the user is not a number a NumberFormatException should be thrown. If the number input by the user is outside the array bounds or represents an element in which the application has not stored a value, an ArrayIndexOutOfBoundsException should be thrown. */ /* Write catch handlers that catch the two types of exceptions the try block might throw (NumberFormatException and ArrayIndexOutOfBoundsException), and display appropriate messages in error message dialogs. */ retrievefield2.settext( "" ); // end anonymous inner class // end new ActionListener ); // end call to addactionlistener // set up output Panel outputarea = new JPanel(); outputarea.add( new JLabel( "Result" ) ); outputfield = new JTextField( 30 ); outputfield.seteditable( false ); outputarea.add( outputfield ); add( inputarea ); add( retrievearea ); add( outputarea ); 7

// end constructor // end class ArrayAccess Figure 1.2 ArrayAccess.java // ArrayAccessTest.java import javax.swing.jframe; public class ArrayAccessTest // execute application public static void main( String args[] ) ArrayAccess application = new ArrayAccess(); application.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); application.setsize( 400, 200 ); application.setvisible( true ); // end class ArrayAccessTest Figure 1.3 ArrayAccessTest.java 1.5 Dizi Elemanlarına Ulaşma Calışmasıyla İlgili Problem Çözme İpuçları 1. Dizide bir eleman ararken, try blogundan önce boolean bir değişken tanımlayınız ve false değerine eşitleyiniz. 2. 3 event handler inde kendine ait try statement i olmalıdır. 8

Çalışma 2.Exception Programındaki Hataları Bulma Bu çalışmadaki program kodu hatalar içermektedir. Programın çalışabilmesi için bütün derleme hatalarını düzeltiniz. Program derlendiğinde, programı çalıştırınız ve sonuçları örnek ekran çıktısıyla karşılaştırınız. Daha sonra mantıksal hata varsa düzeltiniz. Program doğru şekilde çalıştığında sonuçlar aşağıdaki örnek program çıktısı gibi olmalıdır. 2.1 Exception Çalışmasının Örnek Program Çıktısı 2.2 Hatalı Program Kodu import java.io.ioexception; public class SpecialIOException throws IOException public SpecialIOException() super( "Special IO Exception Occurred" ); public SpecialIOException( String message ) this( message ); // end class SpecialIOException // Debugging Chapter 13: DebugException.java import java.io.ioexception; public class DebugException public static void main( String args[] ) try throw new SpecialIOException(); catch ( Exception exception ) System.err.println( exception.tostring() ); catch ( IOException ioexception ) System.err.println( ioexception.tostring() ); 9

catch ( SpecialIOException specialioexception ) specialioexception.tostring(); // end method main // end class DebugException Çalışma 3. InvalidInputException Sınıfı Yazma Exception sınıfının direk altkümesi olan InvalidInputException isimli bir sınıf tanımlayınız. Yor input was invalid. İsimli bir mesaj tanımlamalıdır. Ama aynı zamanda programcının istediği mesajı da yazabilmesine izin vermelidir. 10