Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

S İ STEM Sistem, bir hedef veya amacı gerçekleştirmek üzere bir arada çalışan birbiriyle ilişkili parçalardan oluşan ve girdi-çıktıları olan sınırları.

Benzer bir sunumlar


... konulu sunumlar: "S İ STEM Sistem, bir hedef veya amacı gerçekleştirmek üzere bir arada çalışan birbiriyle ilişkili parçalardan oluşan ve girdi-çıktıları olan sınırları."— Sunum transkripti:

1 S İ STEM Sistem, bir hedef veya amacı gerçekleştirmek üzere bir arada çalışan birbiriyle ilişkili parçalardan oluşan ve girdi-çıktıları olan sınırları belirlenmiş bir bütündür. Sistem tanımında üç temel kavram vardır: Bileşen, İ lişki, Amaç

2 1.1.Sistemin Özellikleri Ayrıca sistemler, çıktıları kontrol etme ve ölçme de ğ erlendirme yoluyla girdiler ve sistem üzerinde iyileştirme yapmak için geri beslemeye sahiptir.(feed-back) Girdi----- İ şlem------çıktı  FEED-BACK

3 1.2.Genel Sistem Teorisi Genel sistem teorisiyle sistemlerde belirlenen özellikler, bilgi sistemlerinin yapısının da anlaşılmasına olanak sa ğ lar. Genel sistem teorisinin başlıca özellikleri; Sistemler, girdileri çıktılara dönüştürür. Sistemler disiplinler arasıdır. Bir bilim dalında bulunan ürün, kural ya da yöntem başka bir bilim dalında kullanılabilir. Sistemler hiyerarşiktir.

4 Bilgi Sistemi Tarafları Sistem geliştirme yaşam döngüsü içinde farklı konumlardaki bireyler birarada çalışmaktadır. Bir bilgi sisteminin tarafları, Kullanıcı Yönetici Programcı Bilgi sistem destek personeli Sistem analisti

5 Bilgi Sistemi Tarafları Kullanıcı Sistem analistleri ve tasarımcıları tarafından yapılan genel bir yanılgı ile bütün müşteriler aynı kategoriye konulmamalıdır. Her kullanıcının bilgisayar bilgisi ve deneyimi olmadı ğ ı gibi görev ve sorumlulukları sonucu kullanacakları sisteme yaklaşımları da farklı olacaktır

6 Bilgi Sistemi Tarafları Yönetici Geliştirilen sistemin büyüklü ğ üne göre yöeticiyi; Proje yöneticisi Üst düzey(işletme) yöneticisi İ ki farklı açıdan elle almak mümkündür. Büyük ölçekli projelerde, projenin uzun süreli başarıya ulaşması için gerekli kriterlerin belirlenmesinden ve proje ekibinin idaresinden proje yöneticisi sorumludur.

7 Bilgi Sistemi Tarafları Programcı Analist ve programcının sistem geliştirme yaşam döngüsündeki görevleri tam olarak ayrılmıştır. Zamanla yarışan ve giderek daha karmaşık yapıya sahip olan programların söz konusu oldu ğ u günümüzde ise daha çok CASE(Computer aided software engineering) araçları kullanılarak kodun büyük bölümü otomatik olarak üretilmektedir. Ancak CASE araçlarının programcının yerini tam olarak aldı ğ ı söylenemez. Kod üreticileri sayesinde programcılar, zamanlarını optimizasyona ve üretilen kodun sisteme entegrasyonuna ayırmaktadırlar.

8 Bilgi Sistemi Tarafları Bilgi Sistem Destek Personeli(Operasyonel Personel) Sistemin süreklili ğ ii sa ğ lamak amacıyla a ğ iletişiminden, donanımdan, veri güvenli ğ inden ve ilgili bilgisayar programlarını çalışmasından çıktıların düzenlenmesine kadar birçok konuda deste ğ in verilmesinden sorumludur. Sistem analisti, sistemin tarafları arasında anahtar rolü üstense de sistemin başarılı olması tek başına sistem analistine ba ğ lı de ğ ildir.

9 Sistem Analistinin Beceri ve Görevleri Genel olarak sistem analistinin hem işletme yönetimi hem de bilgi sistemleri konusunda bilgi sahibi olması beklenir. Böylece sistem analisti, işletmenin karşılaştı ğ ı sorunları ve karşılaştı ğ ı iş fırsatlarını fark ederek bilgi sistemindeki ihtiyaçlarını belirlenmesini ve iş akışının oluşturulacak bilgi sistemine yansımasını kolayca sa ğ lamaktadır.

10 Sistem Analistinin Beceri ve Görevleri Sistem analisti, çözümü ortaya koyarken müşteri ihtiyaç ve isteklerini belirlemelidir.

11 Nesne Yönelimli Programlama Giriş Nesne Yönelimli Programlama yaklaşımı 1960’lı yılların sonuna do ğ ru ortaya çıkmıştır. O dönemde yazılım dünyasında karşılaşılan sorunlara çözüm olması amacıyla geliştirilmiştir. Yazılımların kapsamı, içeri ğ i ve karmaşıklı ğ ı ile birlikte boyutları da sürekli artış gösteriyordu. Bu artış ile beraber, yazılan kodu hızlı bir şekilde gelişime açık ve esnek tutmak için gereken bakım maliyeti, zaman ve çaba da artmaktaydı. Nesne Yönelimli Programlama, bu sorunlara bir çözüm olarak geliştirilmiştir.

12 Nesne Yönelimli Programlama Çözümleri Kapsülleme(encapsulation), kalıtım(inheritance) ve çok biçimlilik(polymorphism) gibi yazılımın bakımını ve aynı yazılım projesi üzerinde ekip çalışmasını kolaylaştıran kavramları da yazılım dünyasına kazandırmıştır. Sa ğ ladı ğ ı bu avantajlardan dolayı Nesne Yönelimli Programlama, günümüzde geniş çaplı yazılım projelerinde yaygın bir biçimde tercih edilip kullanılmaktadır.

13 Nesne Tabanlı Programlama Dilleri Nesne tabanlı programlama dilleri, nesne kullanımını desteklemelerine ra ğ men, kalıtım gibi nesne yönelimli programlama dillerine özgü özgü özellikleri taşımazlar. Nesne yönelimli programlama dillerine örnek olarak; ABAP/4, Simula, Smalltalk, C++, Object Pascal, Objective-C, Eiffel, Python, Java, C Sharp, Visual Basic.Net ve RealBasic’i sayabiliriz. Nesne tabanlı olup da nesne yönelimli olmayan programlama dilleri, nesne ve sınıfları desteklese de kalıtımdan yoksundur.

14 Nesne Yönelimli Programlamanın Faydaları Nelerdir? Parçalar Halinde Programlama Nesne Yönelimli Programlamada bir problemin çözümü parçalara ayrılarak ele alınabilir. Burada her bir parçanın ayrı bir sınıf oldu ğ u söylenebilir. Nesnelerin de sınıflar sayesinde yaratıldıklarını zaten biliyorsunuz.

15 Nesne Yönelimli Programlamanın Faydaları Nelerdir? Gerçek Hayat Nesneleriniş Uygulamaya Taşıma ve Düzenli Kodlama Sınıflar ve nesneler, gerçek hayat problemlerini bilgisayar ortamına taşımada kolaylıklar sa ğ lar. İ stedi ğ imiz her şeyi nesne olarak tanımlayarak üzerinde işlem yapabiliriz. Ayrıca sınıflar, kodlarımızın düzenli bir biçimde durmasını da sa ğ lar. Bu sayede, program üzerinde yapılacak olan de ğ işiklikler için zaman kaybı olmaz.

16 Nesne Yönelimli Programlamanın Faydaları Nelerdir? Bir Kere Kodlayıp Defalarca Kullanma Nesne yönelimli programlamanın özelliklerinden birisi de bir defa kodladıktan sonra, aynı işlemleri tekrar kodlamamaktır. Yani çok sık kullanaca ğ ımız bir işlevi her kullanışımızda tekrar yazmak yerine o işlevi bir sınıf haline getirerek yeri geldi ğ inde sınıfın nesnesini ça ğ ırarak, ihtiyaç duyulan işlevi rahatlıkla kullanabiliriz. Böylelikle projede harcanacak toplam mesai de kısalmış olur.

17 Prosedürel Yaklaşıma Örnek Fortran, Pascal ve C, prosedürel yaklaşımı esas alan programlama dillerinden bazılarıdır.

18 Prosedirel Programlama Yaklaşımında Sınırlamalar Yazılım geliştirme mühendislerini daha iyi bir yol aramaya iten bu sınırlamaları, iki temel başlık altında ele alabiliriz. Tekrar Kullanılmama Prosedürel programlama yaklaşımında prosedürler, uygulama içersinde bir defa yazılıp istenilen yerlerde ça ğ rılırlar. Ancak bir uygulamaya ait prosedürler, başka bir uygulama tarafından kullanılamazlar. Çünkü kod parçaları birbirlerine ba ğ lıdır ve belirli bir seriyi takip eder.

19 Prosedirel Programlama Yaklaşımında Sınırlamalar Kolay De ğ iştirilmeme Prosedürel yaklaşım kullanılarak geliştirilen büyük bir uygulama kolayca modifiye edilemez. Yazılan bütün kodlar birbirlerine sıkı sıkı ba ğ lıdır ve bir yerde yapılan de ğ işikli ğ in, uygulamanın bir çok yerine etkilerini ele almak gerekir. Oysa bir yazılım uygulamasının dinamik ihtiyaçlara cevap verebilmesi, de ğ işiklikleri sessizce yansıtabilmesi gerekmektedir

20 Nesne Yönelimli Dillerin Evrimi Algol-Simula-Smalltalk-C with Classes(C++)-OAK, Java

21 Nesne Yönelimli Dillerin Evrimi Algol Algol(ALGOrithmic Language), 1950’lerin ortalarında Fortan dilindeki problemleri gidermek için dizayn edilen bir dildir. Bunun yanında Algol, Pascal gibi bazı dillerin ortaya çıkmasında rol oynamıştır. ALGOL köşeli parantezli ifade bloklarını kullanır. Ayrıca onları sınırlandırmak için BEGIN END bloklarını kullanan ilk programlama dilidir.

22 Nesne Yönelimli Dillerin Evrimi Simula Hemen hemen bütün nesne tabanlı ve Nesne yönelimli dillerin atası 1960’larda geliştirilen Simula dilidir. Simula ALGOL fikri üzerine inşa edilmiş bir dildir; ancak kapsülleme(encapsulation) ve kalıtım(inheritance) konsetlerini eklemiştir. Belki daha da önemlisi, karmaşık sistemleri tanımlama ve simülasyon geliştirme dili olarak kullanılan Simula’nın, programlama dünyasını spesifik problem alanına özel kod yazma disiplini ile tanıştırmasıdır

23 Nesne Yönelimli Dillerin Evrimi Smaltalk Simula, Smaltalk dilinin birincil esin kayna ğ ıdır. Bu fikir sonraları farklı geliştirmeler ile desteklenmiştir. Smaltalk hem bir dili hem de bir uygulama geliştirme ortamını temsil eder. Saf nesne yönelimli bir dil olan Smaltalk dilinde her şey bir nesne olarak ele alınır. Smaltalk, günümüzde yaygın olmasa da kendisini takip eden bütün nesne yönelimli diller onun konseptinden etkilenmiştir. Bu yüzden önemli bir kilometre taşıdır.

24 Nesne Yönelimli Dillerin Evrimi C with Classes(C++): Orijinal adı C with Classes olan C++ dili; Bjarne Stroustrup adlı bir akademisyen tarafından, doktora tezinde uygulama geliştirirken karşılaştı ğ ı sorunlardan yola çıkarak 1979’da geliştirilmeye başlanmış, 1985’de ilk versiyonu yayınlanmıştır. Bu yeni dilin geliştirilme aşamasında başta C ve Simula olmak üzere ALGOL 68, Ada gibi dillerden esinlenmiştir. Genellikle C dilinin daha gelişmiş hali olarak nitelendirilir.(Tip Kontrolü, Aşırı yüklenmiş fonksiyonlar, statik fonksiyonlar, abstract sınıf, protected üyeler gibi dil yenilikleri gelmiştir).

25 Nesne Yönelimli Dillerin Evrimi OAK Doksanlı yılların hemen başında, Sun Microsystems çalışanlarından James Gosling ve küçük grubu; e ğ lence platformları, mikrodalga fırınlar vb. dijital olarak kontrol edilen tüketici aletleri için ileri seviye uygulamalar geliştiriliyorlardı. Bu programları C++ ile yazmak zor oldu ğ u için 1991 yılında OAK adı verilenn bir dil oluşturdular.

26 Nesne Yönelimli Dillerin Evrimi Java Geliştirme aşamasında OAK, genel amaçlı bir programlama dili haline geldi ve 1995 yılında adı de ğ iştirilerek Java 1.0 sürümü ile duyuruldu. “Write Once, Run Anywhere”(Bir kez yaz, her yerde çalıştır) yani platform ba ğ ımsız uygulama geliştirmek hedefinde olan Java dilinin esas hedefi, yaygınlaşan internet erişimine ayak uydurarak web uygulamalarının kolayca geliştirilece ğ i bir platform haline gelmekti. Java teknolojisi ile uygulama geliştirmek ve çalıştırmak için Java Virtual Machine kullanılması gereklidir ve derlenen kaynak kodlar, platform ba ğ ımsızlık hedefi için Java Byte Code adında ortak bir ara dile dönüştürülmektedir.

27

28

29

30

31 Programlamada Nesneler Nesne, bir varlık ya da konsepti programatik olarak açıklayan soyut bir ifadedir. Nesneler, kendi özellikleri ve davranışları hakkında da bilgi bilgi barındırırlar. Nesneler, hem daha ileride kişisel kullanım için, hem de başka programcıların kullanması için hazırlanabilirler. Başka bir programcının bizim hazırladı ğ ımız nesneyi kullanarak işlem yapması durumunda, bu programcıya nesne kullanıcısı denir.

32 Programlamada Nesneler Windows formu üzerine yerleştirilen metin kutusu(TextBox), liste kutusu(ListBox), buton(Button) vb. sayısız kontrollerin de birer nesne oldu ğ unu biliyorsunuz. Microsoft geliştiricileri, bu kontrolleri biz uygulama geliştiricilerin kullanabilmeleri için yazmışlardır. Bir geliştirici, bu kontrollerin belli işleri yapabildi ğ ini bilir.

33 Sınıf Programlama yaparken sınıf ve nesne kavramlarının birbirinden ayırt edilmesi gerekir. Sınıf, bir nesnenin tanımıdır;davranışlarını yansıtan karakteristiklerin ve nesnede olması gereken özelliklerin neler oldu ğ unu belirleyen bir şablondur.

34 Sınıf

35

36

37 Alanlar, Metotlar, Erişim Belirleyicileri

38

39 Alanların Varsayılan De ğ erleri

40 namespace SinifKullanimi { class Televizyon { public int ekran; public string marka; public bool lcdMi; } class Program { public static void Main() { Televizyon tv = new Televizyon(); //0 de ğ erini almıştır. Console.WriteLine("tv.ekran : {0}", tv.ekran); //boş (null) de ğ er almıştır. Console.WriteLine("tv.marka : {0}", tv.marka); //false de ğ er almıştır. Console.WriteLine("tv.lcdMi : {0}", tv.lcdMi); }

41 Varsayılan De ğ erler ve Lokal De ğ işkenler Bir tip üyesi içersinde tanımlanan lokal de ğ işken için ise senaryo oldukça farklıdır. Bir lokal de ğ işken tanımlandı ğ ında, kullanılması için öncelikle ona bilinçli olarak de ğ er ataması yapılması gerekir. Yani lokal de ğ işkenlerde varsayılan de ğ er ataması söz konusu de ğ ildir.

42 Varsayılan De ğ erler ve Lokal De ğ işkenler Örne ğ in; Aşa ğ ıdaki kod blo ğ u derleme zamanı hatası ile sonuçlanır.

43 Varsayılan De ğ erler ve Lokal De ğ işkenler

44 NOT: Lokal de ğ işkenleri kullanmak için başlangıç de ğ eri verilmesi zorunlulu ğ unun Geçerli olmadı ğ ı tek bir istisna durum vardır: E ğ er lokal de ğ işken bir metoda Output parametresi olarak aktarılmak üzere kullanılırsa, başlangıç de ğ er ataması Yapılmasına gerek yoktur. Çünkü zaten metot içersinde kendisine mutlaka bir De ğ er atanmak zorundadır.

45 Nesne Alanlarına Erişmek Bir nesne alanına sadece kendisini içeren sınıf nesne örne ğ i üzerinden erişilebilir. Do ğ rudan sınıf adına erişilmez. Bu da gösteriyor ki bir alanla çalışabilmek için öncelikle nesne örne ğ inin belle ğ e çıkarılmış olması gerekir

46 Nesne Alanlarına Erişmek namespace SinifKullanimi { class Program { public static void Main(string[] args) { Oyuncu o1 = new Oyuncu(); o1.adi = "Emre"; o1.takimi = "Newcastle United"; o1.formaNo = 5; FormaDegistir(o1, 9); Console.WriteLine("{0} {1}, {2}", o1.formaNo, o1.adi, o1.takimi); Console.ReadLine(); } static void FormaDegistir(Oyuncu oyuncu, int yeniNo) { oyuncu.formaNo = yeniNo; }

47 Nesne Alanlarına Erişmek Yukarıdaki kodda öncelikle bir Oyuncu nesnesi örneklenmektedir. Ardından her bir alanın de ğ eri verilir, forma numarasının de ğ iştirilmesi için FormaDegistir() metodu ça ğ rılır. Son olarak o1 referansının işaret etti ğ i Oyuncu nesnesi ile ilişkili olan her bir alanın de ğ eri ekranda gösterilir. Görüldü ğ ü gibi bir alana de ğ eri verilmeden önce Oyuncu nesnesine ihtiyaç duyulmaktadır. Dolayısıyla alanlara de ğ er atanırken ve de ğ erlerine erişilirken o1 de ğ işkeni, alan isimlerinin ön eki gibi kullanılmaktadır.

48 Yapıcı Metotlar(Constructor) C# gibi nesne yönelimli dillerin en büyük avantajlarından birisi, bir sınıf nesne örne ğ i oluşturuldu ğ u anda otomatik olarak ça ğ rılan özel bir metodun tanımlanabilmesidir. Bu metoda yapıcı(constructor) adı verilir. Varsayılan yapıcı metot, nesne içerisinde belle ğ e çıkarılacak olan bütün alanların do ğ ru varsayılan de ğ erleri almasını sa ğ lar. Peki nesne oluşturuldu ğ u anda ça ğ rılan yapıcı metoda isim olarak ne verilir de derleyicinin bu işi otomatik olarak yapması sa ğ lanır. C# dilinde kullanılan yapıcı metotlar, bulundukları sınıfla aynı isimdedirler.

49 Yapıcı Metotlar(Constructor)

50

51 Yapıcı Metotların Parametrik Olması Nesne kullanıcısı nesne ile çalışmaya başladı ğ ında(yani nesne örne ğ i oluşturulmasının hemen ardından) genellikle iş sınıf içersinde tanımlanmış alanların de ğ erlerinin verilmesidir. Oyuncu sınıfı gibi birçok sınıf ile çalışılırken, bir tane nesne için de ğ eri gerekli bazı alanlara atama yapılmadan o nesne ile çalışmanın fazla bir anlamı olmayabilir. Bu sebeple, nesne referansı üzerinden ilgili de ğ işkenler ça ğ rılır ve sırayla de ğ erleri verilir. Öyleyse, daha nesne örne ğ i oluşturulurken bu alanların alaca ğ ı de ğ erlerin belli olması do ğ ru olacaktır. Bu durumda nesne, alanlarının varsayılan de ğ erleri ile de ğ il, çalışacak gerçek de ğ erleri ile belle ğ e çıkar. Sınıflar bu iş için, varsayılan yerine kendi yapıcı metotlarımızın yazılması imkanını sunarlar. Bu şekilde, nesne kullanıcısına nesneyi oluşturma anında durum verilerine başlangıç de ğ erlerinin verilmesi için kolay bir yol sunulmuş olur.

52 namespace YapiciMetotKullanimi { class Oyuncu { //Kendi yazdı ğ ımız yapıcı metot, nesnenin //durum verilerine kullanıcıdan alınan //parametre de ğ erlerini aktarıyor public Oyuncu(string ad, string takim,byte formaNumarasi) { adi = ad; takimi = takim; formaNo = formaNumarasi; Console.WriteLine("Parametrik yapıcı metot çalıştı"); } //Varsayılan yapıcı metot public Oyuncu() { Console.WriteLine("Varsayılan yapıcı metot ça ğ rıldı..."); } public string adi; public string takimi; public byte formaNo; public string BilgiVer() { return string.Format("{0} {1} - {2}", formaNo, adi, takimi); } public void TakimDegistir(string yeniTakim) { takimi = yeniTakim; }

53 Yapıcı Metotların Parametrik Olması

54 namespace YapiciMetotKullanimi { class Program { public static void Main(string[] args) { //Varsayılan yapıcı metot //(constructor) ça ğ rılır. Oyuncu o1 = new Oyuncu(); Console.WriteLine(o1.BilgiVer() + "\n"); //Parametreli yapıcı metot //ça ğ rılır. Oyuncu o2 = new Oyuncu("Tuncay", "Middlesbrough", 9); Console.WriteLine(o2.BilgiVer()); Console.ReadLine(); }

55 Yapıcı Metotların Parametrik Olması namespace YapiciMetotKullanimi { class Oyuncu { public string adi; public string takimi; public byte formaNo; public Oyuncu(string ad) { adi = ad; } public Oyuncu(string ad, string takim) { adi = ad; takimi = takim; } public Oyuncu(string ad, string takim, byte formaNumarasi) { adi = ad; takimi = takim; formaNo = formaNumarasi; } public string BilgiVer(){ return string.Format("{0} {1} - {2}", formaNo, adi, takimi); } public void TakimDegistir(string yeniTakim) { takimi = yeniTakim; }

56 Erişim Belirleyicileri(Access Modifiers) Sınıf(class) ya da yapı(struct) üyelerinin(metorlar, alanlar, yapıcı metotlar vb.) erişim düzeyleri, tanımlandıklarında belirtilmek zorundadır. E ğ er üye, bir erişim belirleyici anahtar kelimesi kullanılmadan tanımlanırsa, otomatik olarak private ataması yapılır.

57 6.DERS

58 Nesne Yönelimli Temel Prensipleri Kapsülleme(Encapsulation) Kalıtım(Inheritance) Çok Biçimlilik(Polymorphism)

59 1-Kapsülleme

60 Özellik(Property Tanımlamak) Örne ğ ın kullanıcı klavyeden küçük harf girmesi gerekirken büyük harf girmiş ise; Bu durumda kapsülleme mantı ğ ı ile karakterlerin otomatik olarak küçülmesi sa ğ lanır. Bir başka örnek: Girilen sayı negatif ise bu sayıyı otomatik olarak pozitife döndür şeklinde Gerçekleştirir.

61 1-Kapsülleme Özellik(Property Tanımlamak) namespace Kapsulleme { class Kitap { private string _kitapAdi; public string KitapAdi { get { return _kitapAdi; } set { //Burada atama öncesi gerekli //kontroller yapılır. Herşey yolunda //ise atama gerçekleştirilir. _kitapAdi = value; }

62 2-Kalıtım’a(Inheritance) Neden İ htiyaç Duyulur?

63 namespace Kalitim { //Otomatik olarak System.Object sınıfından türer. class Calisan { }

64 2-Kalıtım’a(Inheritance) Neden İ htiyaç Duyulur? namespace Kalitim { //Her iki kullanım da do ğ rudur. class Calisan : System.Object { } //ya da class Calisan : object { }

65 2-Kalıtım’a(Inheritance) Neden İ htiyaç Duyulur?

66 namespace Kalitim { class Calisan { private int _sskNo; private string _adi; private double _maasi; public int SskNo { get { return _sskNo; } set { _sskNo = value; } } public string Adi { get { return _adi; } set { _adi = value; } } public double Maasi { get { return _maasi; } set { _maasi = value; } } namespace Kalitim { class Mudur : Calisan { //Bir müdür, departmanın ne kadar kar yaptı ğ ını bilmelidir. private double _departmanKar; public double DepartmanKar { get { return _departmanKar; } set { _departmanKar = value; } } class SatisElemani : Calisan { //Bir satış elemanı ne kadar satış yaptı ğ ını bilmelidir. private int _satisSayisi; public int SatisSayisi { get { return _satisSayisi; } set { _satisSayisi = value; } }

67 2-Kalıtım’a(Inheritance) Neden İ htiyaç Duyulur? namespace Kalitim { //Bir türeyen sınıf nesnesi oluşturulup temel sınıf üyelerine erişilir. class Program { public static void Main(string[] args) { //Yeni bir Mudur nesnesi oluşturulur. Mudur cem = new Mudur(); //Calisan temel sınıfından miras alınan üyeler cem.SskNo = ; cem.Adi = "Cem Suskun"; cem.Maasi = 1000; //Mudur sınıfı tarafından tanımlanan üyeler cem.DepartmanKar = ; Console.ReadLine(); }

68 Çok Biçimlilik(Polymorphism) Neden İ htiyaç Duyulur?

69 namespace CokBicimlilik { class Calisan { public void ZamYap(double zamMiktari) { //Atama, do ğ rudan temel sınıftaki üyeye yapılır. _maasi += zamMiktari; }

70 Çok Biçimlilik(Polymorphism) Neden İ htiyaç Duyulur? namespace CokBicimlilik { class Program { public static void Main(string[] args) { //Her çalışana zam yapılsın. Mudur mdr = new Mudur( , "Tarık Ali", 1000, 20000); mdr.ZamYap(250); Console.WriteLine("mdr.Maasi : {0}", mdr.Maasi); SatisElemani sts = new SatisElemani( , "Sena Sevim", 750, 220); sts.ZamYap(150); Console.WriteLine("sts.Maasi : {0}", sts.Maasi); Console.ReadLine(); }

71 Çok Biçimlilik(Polymorphism) Neden İ htiyaç Duyulur? Temel Sınıf Davranışlarını Ezmek: Virtual ve Override namespace CokBicimlilik { class Calisan { //ZamYap() metodu varsayılan olarak, bir uygulama //mantı ğ ına sahip. Türeyen sınıflar bu uygulamayı //de ğ iştirmek ve aynen kullanmak konusunda özgürler. public virtual void ZamYap(double zamMiktari) { this._maasi += zamMiktari; } public virtual string BilgiVer() { return this.SskNo + " / " + this.Adi + " / " + this.Maasi; } //Di ğ er üyeler }

72 Çok Biçimlilik(Polymorphism) Neden İ htiyaç Duyulur? Temel Sınıf Davranışlarını Ezmek: Virtual ve Override namespace CokBicimlilik { class SatisElemani : Calisan { //Di ğ er üyeler public override void ZamYap(double zamMiktari) { double ekstraZam = 0; if ((SatisSayisi > 0) && (SatisSayisi < 50)) { ekstraZam = 30; } this._maasi += (zamMiktari + ekstraZam); } public override string BilgiVer() { string temelBilgi = base.BilgiVer(); temelBilgi += " / " + this.SatisSayisi; return temelBilgi; }


"S İ STEM Sistem, bir hedef veya amacı gerçekleştirmek üzere bir arada çalışan birbiriyle ilişkili parçalardan oluşan ve girdi-çıktıları olan sınırları." indir ppt

Benzer bir sunumlar


Google Reklamları