Nesne tabalı Programlamaya giriş 1 Nesne tabalı Programlamaya giriş
1.1 Giriş 1.2 Bilgisayar nedir? 1.3 Bilgisayar Organizasyonu 1.4 İlk işletim sistemleri 1.5 Şahsi, Dağıtık and Client/Server Sistemler 1.6 İnternet ve World Wide Web 1.7 Makina Dilleri, Assembly Dilleri ve Yüksek Seviyeli Diller 1.8 C ve C++’ın tarihi 1.9 Java’nın tarihi 1.10 Java Nesne Kütüphanesi
1.11 BASIC, Visual Basic, Visual C++, C# ve .NET 1.12 Tipik Java geliştirme ortamı 1.13 Java hakkında notlar ve Java How to Program, Sixth Edition 1.14 Yazılım mühendisliği örneği: Objeye Dayalı Teknoloji ve UML
1.1 Giriş Java How to Program, Sixth Edition Java 2 Platform, Standard Edition (J2SE) J2SE Development Kit version 5.0 Nesneye dayalı programlama
1.2 Bilgisayar nedir? Bilgisayar Bilgisayar Programları Donanım Hesaplamalar yapar ve mantığa dayalı kararlar verir İnsanlardan milyonlarca kez daha hızlı Bilgisayar Programları Bilgisayarın verileri işlemek için kullandığı komutlar topluluğu Donanım Bilgisayar sisteminin fiziksel parcaları Yazılım Bilgisayarlarda çalışan programlar
1.3 Bilgisayar Organizasyonu Bilgisayarın altı mantıksal ünitesi Giriş ünitesi Fare, klavye Çıkış ünitesi Yazıcı, monitör, hoparlör Hafıza ünitesi Giriş yapılan ve işlenen bilgileri tutar Arithmetik, mantık birimi(ALU) Hesaplama yaparken kullanılır Merkezi işlem birimi (CPU) Diğer aletlerin çalışmasını denetler İkincil hafıza Hard disk, disket, flash disk
1.4 Erken İşletim Sistemleri Ardışık İşleme(Batch processing) İşlerin sırayla yapılmasıdır. İşletim sistemleri geliştirildi. Bilgisayarların daha kolay ve verimli kullanılmasını sağlayan programlar Bir işten diğer işlere geçişi kolaylaştırır Çoklu Programlama(Multiprogramming) “Simultane” işlem yapılır Zaman paylaşımlı (timesharing) işletim sistemleri
1.5 Kişisel, Dağıtık ve İstemci/Sunucu Sistemler Kişisel (Personal) sistemler Kişisel kullanım için bilgisayarlar Dağıtık Sistemler (Distributed computing ) Bir işi birden çok bilgisayar arasında paylaştırmak İstemci/sunucu sistemleri Sunucular genel programlar ve veriler sunarlar İstemciler program ve verilere sunucudan ulaşırlar
1.6 İnternet ve World Wide Web Kırk yıl önce Amerikan Savunma Bakanlığı geliştirdi Birkaç ana makinayı birbirine bağlamak için tasarlanmıştı Şimdi milyonlarca bilgisayarı birbirine bağlıyor World Wide Web (WWW) multimedia-tabanlı dökümanların saklanıp paylaşılmasını ve görüntülenmesini sağlar
1.7 Makina Dili, Assembly Dili ve Yüksek seviyeli diller Bilgisayarın “doğal dili” Makinaya bağlıdır Assembly dili İngilizceye benzer kısaltmalar bilgisarın operasyonlarını temsil eder Cevirici (Translator) programlar makina diline ceviriler Yüksek seviyeli diller Konuşma diline daha yakınkomutların kullanılmasını sağlar Sık kullanılan matematik işlemlerini de içerir Derleyiciler (Compiler) makina diline çevirir Yorumlayıcı (Interpreter) Yüksek seviyeli dilleri derlemeden çalıştırır
1.8 C and C++’un tarihi C++ Objeler C’den geliştirildi BCPL ve B’den geliştirildi Objeye dayalı programlama kapasitesini C ye ekler Objeler Gerçek dünya nesnelerini modelleyen tekrar kullanılabilen yazılım bileşenleri
1.9 Java’nın tarihi Java Orjinal olarak akıllı, kişisel elektronik cihazlar için geliştirildi. Daha sonra dinamik içeriği olan Web sayfalarının geliştirilmesi için kullanıldı Şimdi: Büyük ölçekli enterprise uygulamalar için www sunucu fonksiyonlarını geliştirmek için Kişisel elektronik aletlerde uygulamalar geliştirmek için (cep telefonları, etc.)
1.10 Java Sınıf Kütüphaneleri Sınıflar (Classes) İşlevleri olan metodlar içerirler Metodlar işlemlerini tamamladıktan sonra geriye değerler gönderirler Sınıflar Java programları yazmak için kullanılırlar Java sınıf kütüphaneleri içerir Java APIs (Application Programming Interfaces) olarak adlandırılırlar
Yazılım Mühendisliği Gözlemi 1.1 Program parçalarını yapı taşları olarak düşünmeye çalış. Mümkün olduğu kadar yazılım parçalarını tekrar kullan. Nesneye dayalı programlamanın temel prensibi budur. Yazılım Mühendisliği Gözlemi 1.2 Java ortamında program yazarken şu yapı taşlarını kullanacaksınız: Sınıf kütüphanelerınden sınıf ve metodlar class, kendi yazdığınız sınıf ve metodlar ve başkalarının yazdığı sınıf ve metodlar. Performans önerisi 1.1 Java API sınıflarını ve metodlarını kullanmak kendinizin tekrar yazmasından daha avantajlıdır. Bu sınıf ve metodlar çok dikkatli yazıldıkları için yüksek performans sağlarlar. Bunları kullanmak program geliştirme zamanını kısaltır.
1.11 BASIC, Visual Basic, Visual C++, C# and .NET Beginner’s All-Purpose Symbolic Instruction Code .NET .NET platform Visual Basic .NET BASIC üzerine yazılmıştır. Visual C++ C++üzerine yazılmıştır. C# C++ ve Java dilleri üzerine yazılmıştır., C sharp
1.12 Tipik Java geliştirme ortamı Java programları beş aşamada çalıştırılır Edit Programcı programı yazar (ve diske kayd eder) Compile (Derleyici) Derleyici programdan bytecode oluşturur Load (Yükleme) Sınıf yükleyici bytecode ları hafızaya yükler Verify (Doğrulama) Bytecode Doğrulayıcı bytecode ları denetler ve güvenlik sınırlamalarına uyup uymadığına bakar Execute (Çalıştır) JVM bytecode larını makina diline cevirip çalıştırır
Fig. 1.1 | Typical Java development environment.
Çok görülen programlama hataları 1.1 Sıfır tarafından bölünme hataları programın çalışması sırasında olur, bunlara runtime errors veya execution-time errors denir. Fatal runtime errors hataları programın derhal durdurulmasına sebep olur. Nonfatal runtime errors hatalarında program çalışmaya devam eder fakat hatalı sonuç üretir.
İyi Programlama Taktikleri 1.1 Taşınabilirlilik 1.2 Although it is easier to write portable programs in Java than in other programming languages, differences between compilers, JVMs and computers can make portability difficult to achieve. Simply writing programs in Java does not guarantee portability. İyi Programlama Taktikleri 1.3 Bilgisayarınız ve derleyiciler iyi öğretmenlerdir. Eğer Java kullanım kılavuzundan birşeyin nasıl çalıştığını anlayamıyorsanız Java geliştirme ortamında denemeler yapın. Hata ve uyarı mesajlarını okuyup bunların oluşma sebeplerini anlamaya çalışın. Genellikle bu yöntem birçok problemin çözümünü sağlar
1.14 Yazılım mühendisliği örneği: Nesneye Dayalı Teknoloji ve UML Unified Modeling Language (UML) Ortak notasyon kullanan grafiksel dil Nesneye dayalı dizaynların temsil edilmesini sağlar
1.14 Yazılım mühendisliği örneği (devam) Objeler Gerçek dünya nesnelerini modelleyen tekrar kullanılabilen yazılım bileşenleri Çevrenize bakınız İnsanlar, hayvanlar, bitkiler, arabalar, ... Tanımlayıcı özellik(Attributes), (karakteristik özellik) Büyüklük, şekil, renk, ağırlık, ... Davranışlar (Behaviors) Bebekler ağlar, emekler, uyur, ...
1.14 Yazılım mühendisliği örneği (devam) Nesneye dayalı dizayn (OOD) Gerçek dünya nesnelerini modeller Nesneler arasındaki haberleşmeyi modeller Nesnenin tanıtıcı özelliklerini ve davranışlarını gizler (Encapsulation) Bilgi saklama İyi tanımlanmış arayüzlerden haberleşme Nesneye dayalı programlama dilleri Nesneye dayalı programlama teknikleri kullanarak yazılmış programlamaya, nesneye dayalı programlama denir (OOP) Java, C++, C#, Delphi
1.14 Yazılım mühendisliği örneği (devam) Nesneye Dayalı Analiz ve Dizayn Object-Oriented Analysis and Design (OOA/D) Büyük programlar için çok önemli Önce analiz et sonra çözüm geliştir UML Unified Modeling Language
1.14 Yazılım mühendisliği örneği (devam) UML Grafiksel olarak temsil etmek Nesneye dayalı sistemlerin modellenmesinde kullanılır Esnek ve geliştirilebilir