NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar



Benzer belgeler
NESNE TABANLI PROGRAMLAMA Temel Kavramlar

NESNEYE YÖNELİK PROGRAMLAMA. Yrd.Doç.Dr. Zeynep ORMAN

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

NESNE TABANLI PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

ALGORİTMA VE PROGRAMLAMA II

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

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

1 PROGRAMLAMAYA GİRİŞ

Programlama Dillerinde Kullanılan Veri Tipleri

BİL-141 Bilgisayar Programlama I (Java)

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

BLG Sistem Analizi ve Tasarımı. Öğr. Grv. Aybike ŞİMŞEK

Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Hafta 13 Fonksiyonlar

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

YZM 2116 Veri Yapıları

YZM 2108 Yazılım Mimarisi ve Tasarımı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Yrd. Doç. Dr. Caner ÖZCAN

1) Programlama dillerinin temel kavramlarını öğrenir. 1,2,4 1

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

SiSTEM ANALiZi ve TASARIMI

Bilgisayar Programı Nedir?

Veri Yapıları ve Algoritmalar

T.C. MALTEPE ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ LİSANS PROGRAMI Bahar Yarıyılı

Temel Bilgisayar Programlama

BLM 111 Algoritma ve Programlama I Güz 2018

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Bilgisayarda Programlama. Temel Kavramlar

HSancak Nesne Tabanlı Programlama I Ders Notları

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Bilgisayar Programlama. 1.Hafta

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

Ders 8 Konu Özeti ve Problemler

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Bölüm 12. Nesne yönelimli programlama desteği

EĞİTİM ÖĞRETİM MÜNEVVER ÖZTÜRK ORTAOKULU II. DÖNEM BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ DERS NOTLARI

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

DOKUZ EYLÜL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ DEKANLIĞI DERS/MODÜL/BLOK TANITIM FORMU. Dersin Kodu: CME 1001

İfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için,

Nesne Yönelimli Programlama

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

SINIF YAPISI ve NESNE YÖNELİMLİ PROGRAMLAMA NESNE YÖNELİMLİ PROGRAMLAMA

10.DERS Yazılım Gerçekleştirme

Temel Bilgisayar Programlama

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

Nesneye Yönelik Tasarım ve Programlama (COMPE 501) Ders Detayları

Algoritma ve Akış Diyagramları

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

Yrd. Doç. Dr. Caner ÖZCAN

Hafta 12 Karakter Tutan Diziler

T.C. MARDİN ARTUKLU ÜNİVERSİTESİ MİDYAT MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI (UZAKTAN ÖĞRETİM) ÖNLİSANS PROGRAMI Eğitim Öğretim Yılı

C Dersleri Bölüm 3 : Program akışı

C++ Dersi: Nesne Tabanlı Programlama

Dr. Fatih AY Tel: fatihay@fatihay.net

Bölüm 2 Varlık-İlişki Veri Modeli: Araçlar ve Teknikler. Fundamentals, Design, and Implementation, 9/e

Nesne Yönelimli Programlama

BÖLÜM 11: YAPISAL VERİ TİPLERİ

ALGORİTMA VE PROGRAMLAMA I DERS#1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Kalıtım (Inheritance)

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

ALGORİTMA VE PROGRAMLAMA I

Yrd. Doç. Dr. Caner ÖZCAN

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

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

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Genel Programlama II

NESNEYE YÖNELİK PROGRAMLAMA

BİL-142 Bilgisayar Programlama II

BLG 1306 Temel Bilgisayar Programlama

BİL1002 Bilgisayar Programlama PROF.DR.TOLGA ELBİR

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

Hızlı Uygulama Geliştirme (SE 340) Ders Detayları

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Nesne Yönelimli Programlama

Transkript:

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu sunumda Prof. Dr. Yılmaz KILIÇASLAN ın Nesneye Yönelik Programlama dersi sunumlarından faydalanılmıştır.

Derse ilişkin genel bilgiler Dersi veren: Özlem AYDIN E-mail: ozlema@trakya.edu.tr Dersin yardımcıları: Önder AÇIKGÖZ Dersin web sayfası: http://ozlemaydin.trakya.edu.tr/d1.html

Derse ilişkin genel bilgiler Değerlendirme Vize: %30 Proje: %20 Final: %50 Kaynaklar C ve C++, Harvey M. Deitel & Paul J. Deitel, Sistem Yayınları, 2004. C++ Temel Öğrenim Kılavuzu, Herbert Schildt, Alfa Basım Yayın Dağıtım, 2010.

Derse ilişkin genel bilgiler Dersin Amacı Nesneye Yönelik Programlama dersinin iki ana amacı vardır: 1. nesneye yönelik programlamanın temel ilke ve kavramlarını öğrenmek ve 2. bu ilke ve kavramları C++ programlama dili ile etkin olarak kullanabiliyor olmak.

Derse ilişkin genel bilgiler Ders Konuları Nesneye yönelik programlamanın genel kavramları C dilinin bir üst kümesi olarak C++ UML (Unified Modelling Language-Bütünleşik Modelleme Dili) ile analiz UML ile tasarım Soyutlama Sarmalama Nesneye yönelik yaklaşımda dinamik bellek yönetimi

Derse ilişkin genel bilgiler Ders Konuları- devam Static eleman sahalar Arkadaş sınıf ve fonksiyonlar Eleman nesneler Nesne dizileri Kalıtım Sanal sınıflar Çok biçimlilik

Projeler hakkında En fazla 5 er kişilik proje grupları oluşturulacak. Bir hafta sonrasında proje grupları üyelerini belirleyecek ve devamındaki bir haftalık süre içerisinde seçmiş oldukları konuyu bildirecekler. Bir proje konusunu en fazla iki grup seçebilir. Bu sayıdan fazla olması durumunda kura çekilecek. İsteyen grup kendi belirlediği proje konusu ile gelebilir. Onay verdiğimiz takdirde belirledikleri projeyi yapabilirler. Bütün projeler nesneye yönelik modellemeye ait kavramları uygulamaya yönelik çalışmalar olmalıdır.

Projeler hakkında devam Projeler, başarı notunun hesaplanmasında %20 lik paya sahiptir (vize %30, final %50). Projelerin Analiz-Tasarım aşamasında projeye ait UML diyagramları hazırlanıp doküman olarak teslim edilecek. Projeler dönem sonunda doküman (rapor+kod) olarak teslim edilecek. Proje bitiminde her grup projesine ait sunumu uygulama dersinde sunacak. Not: Projelerin teslim şekline ilişkin ayrıntılı bilgi için http://ozlemaydin.trakya.edu.tr/d1.html sayfasına bakınız.

PROGRAMLAMA YAKLAŞIMLARI Bir programlama dili algoritmalar ve veri yapılarından oluşur. Programlama dilleri programlamaya yaklaşım açısından 4 gruba ayrılabilir: Prosedür yönelimli diller (örn. Fortran, Pascal, C) Fonksiyon yönelimli diller (örn. Lisp) Nesne yönelimli diller (örn. C++, C#, Java) Mantık yönelimli diller (örn. Prolog)

Prosedür yönelimli (yapısal) yaklaşım Prosedür yönelimli programlamada amaç problemi alt parçalara bölerek bu parçaların çözümlerinin birleştirilmesidir. Nesne yönelimli programlama yaklaşımlarını kullanan dillerin neredeyse tamamı yapısal programlamayı da bünyelerinde barındırmaktadır.

Fonksiyonel yönelimli yaklaşım Fonksiyonel yönelimli yaklaşımda bir veri işleme işinde yapılacak işler sadece fonksiyon çağrıları ile ifade edilir. Kod tekrarını engellemekte ve aynı kodun farklı şartlar için tekrar tekrar çalışmasını sağlamaktadır. Kodun okunabilirliğini arttırmakta ve kod analizini daha kolay hale getirmektedir. Programın tasarlanması aşamasında tasarımcıya modüler yaklaşım yapmasını sağlamaktadır.

Mantık yönelimli yaklaşım Mantık yönelimli yaklaşımda bir problemin çözümünde uygun mantıksal terimler kullanılarak bir algoritma kurulabileceği görülmektedir. Burada problemin çözümünün nasıl bulunacağı değil, problemin ne olduğunun tanımlaması yapılır.

Nesne Yönelimli Yaklaşım Nesneye yönelik yaklaşım 1960 lı yılların sonuna doğru, yazılım dünyasında beliren bir bunalımın sonucu olarak ortaya çıkmıştır. Yazılımların karmaşıklığı ve boyutları sürekli artıyor, ancak belli bir nitelik düzeyi korumak için gereken bakımın maliyeti zaman ve çaba olarak daha da hızlı artıyordu.

PROSEDÜR YÖNELİMLİ DİLLERE ALTERNATİF OLARAK NESNE YÖNELİMLİ DİLLER Geleneksel prosedür yönelimli programlama yaklaşımında, bir program gerçekleştirilecek bir dizi işlem adımını, yani bir algoritmayı, tanımlar. Nesneye-yönelik yaklaşımda ise, bir program nesneleri ve birbiriyle etkileşim halinde olan bir nesneler sistemini tanımlar. C++ ı tümüyle prosedürel bir dil olarak kullanabiliriz; fakat, ancak nesneye-yönelik bir yaklaşımla bu dilin bütün potansiyelini açığa çıkarabiliriz.

NESNEYE-YÖNELİK PROGRAMLAMANIN TEMEL İLKELERİ Nesneye-yönelik programlamanın temel ilkeleri şunlardır: Soyutlama Saklama Kalıtım Çok biçimlilik SINIF SINIF HİYERARŞİSİ

NESNEYE-YÖNELİK PROGRAMLAMANIN TEMEL KAVRAMLARI Nesneye-yönelik programlamanın temel kavramları, 1. büyük programlar yazmayı kolaylaştıran soyutlama ve programları değiştirmeyi ve korumayı kolaylaştıran saklama 2. kalıtım ve çok biçimliğe izin veren ve programları kolayca genişletilebilir kılan sınıf hiyerarşisidir. Herhangi bir programlama dilinde bu kavramları uygulayabilirsiniz; fakat, nesneye-yönelik programlama dilleri salt bu amaçla tasarlanmışlardır.

SOYUTLAMA Soyutlama önemli özelliklere odaklanabilmek için ayrıntıları göz ardı etme sürecidir. Geleneksel olarak, bir programlama dili soyutlama yapmaya izin verdiği ölçüde yüksek-düzeyli (high-level) kabul edilir. C++ (ve diğer nesneye-yönelik programla dilleri) verilen bir işi C den daha soyut bir tarzda tanımlama imkanı verirken, C de Birleştirici Dillerden daha soyut bir ortam sunar.

SOYUTLAMA Soyutlama, belirli bir bakış açısından, önemli özelliklere odaklanabilmek için ayrıntıları göz ardı etme sürecidir.

PROSEDÜREL SOYUTLAMA-1 İşlemlere ilişkin ayrıntıları göz ardı etmemize izin veren prosedürel soyutlama en yaygın soyutlama tarzıdır. Programlarda kişileştirilmiş kod kullanmak yerine, belirli görevleri gerçekleştirmek için standart fonksiyonların oluşturulması bir prosedürel soyutlamadır.

PROSEDÜREL SOYUTLAMA-2 Kendi fonksiyonlarınızı yazarak, programın yaptığı bir dizi işleme bir isim vermiş olursunuz. Örneğin, iki karakter katarının aynılığını büyük-küçük harf ayrımı gözetmeksizin test eden aşağıdaki kodu, while (*s!= \0 ) { if ((*s == *t) ((*s >= A ) && (*s <= Z ) && ((*s+32) == *t)) ((*t >= A ) && (*t <= Z ) && ((*t+32) == *s)) ) { s++; t++; } else break; } if (*s == \0 ) printf( esit \n ); else printf( esit degil \n ); bir fonksiyon içine yerleştirebiliriz: if (!_stricmp(s, t) ) printf( eşit \n ) else printf( esit degil \n );

PROSEDÜREL SOYUTLAMA-3 Belirli bir dilde bir program yazarken programcı kendisini bu dilin sunmuş olduğu soyutlama düzeyiyle sınırlamak zorunda değildir. Birçok dil kullanıcıtanımlı fonksiyonlar (rutinler, prosedürler) yardımıyla prosedürel soyutlama düzeyini daha yukarılara taşımaya izin verir. Prosedürel soyutlama ile kod tekrarlarından kurtulmak mümkündür.

VERİ SOYUTLAMASI-1 Bir veri tipinin nasıl yapılandığının ayrıntılarını göz ardı etmemize izin veren soyutlama tarzına veri soyutlaması denir. Örneğin, bilgisayardaki her tür veri ikili sayılar olarak düşünülebilir. Fakat, birçok programcı ondalık sayılarla düşünmeyi tercih ettiği için, dillerin çoğu tam ve floating sayıları destekler. Basic dili karakter katarı (string) tipini bir veri soyutlaması olarak destekler. Diğer yandan, C dili string soyutlamasını doğrudan desteklemez.

VERİ SOYUTLAMASI-2 Prosedürel soyutlama kapasitelerinin aksine, birçok dil yeni veri soyutlaması düzeyleri yaratmak konusunda sınırlı destek sağlarlar. C kullanıcı tanımlı veri tiplerini structure lar ve typedef ler aracılığıyla destekler. Birçok programcı structure ları basit bir değişkenler topluluğu olarak kullanır: struct KisiBilgisi { char isim[30]; long telefon; char adres1[30]; char adrese2[30]; }

Nesne: Prosedürel Soyutlama + Veri Soyutlaması Bir structure ın bildirimini kendisini kullanmamız gereken fonksiyonları belirtmeden yapabiliriz. C dili, içsel olarak birbirlerine bağlı olmalarına rağmen, prosedürel soyutlamayı ve veri soyutlamasını iki ayrı teknik olarak sunar. Bu tekniklerin birleştiği noktada nesne-tabanlı ya da nesneye-yönelik programlama yaklaşımı doğar.

Nesne tanımı Soyutlama, kodu ve kodun işlediği verileri bir araya getiren ve onları dış etkilerden, yanlış kullanımlardan koruyan mekanizmadır. Nesneye yönelik dillerde kod ve veri, bir "kara kutu" oluşturacak şekilde bir araya getirilir. Kod ve verinin bu şekilde birbirine bağlanmasıyla da nesne meydana gelmiş olur.

SINIFLAR Nesneye-yönelik programlama, prosedürel soyutlama ve veri soyutlamasını sınıflar biçiminde birleştirir. Bir sınıfı tanımlarken, yüksek-düzeyli soyut bir yapıya ilişkin her şey belirlenir. Bu sınıfa ait bir nesneyi kullanırken, sınıf içinde bildirilmiş veri tipleri ve onlar üzerinde tanımlanmış işlemler göz ardı edilebilir.

SARMALAMA Programımızın tasarımını kendi işlem kümelerine sahip soyut veri tipleri etrafında yaparak kendimizi kodlama / gerçekleme detaylarından daha fazla arındırırız. Bu da bizi nesneye-yönelik programlamanın bir diğer avantajına, sarmalamaya, götürür.

SARMALAMA / BİLGİ SAKLAMA Sarmalama, soyutlamayı desteklemek yada güçlendirmek için bir sınıfın iç yapısının gizlenmesidir. Bu gizleme, bir sınıfın görünür arayüzü ile özel gerçeklemesi arasında keskin bir ayrım yapmamızı gerektirir. Bir sınıfın arayüzü o sınıfın ne yapabileceğini, gerçeklemesi ise bunu nasıl yapabileceğini gösterir. Gerçek bir sarmalama, verileri fonksiyonlarla gizlemeyi gerektirir.

SARMALAMA Nesnenin içindeki kod, veri veya her ikisi bu nesneye private (özel) veya public (genel) olabilir. Private kod ve veriler, sadece o nesneye ait bileşenler tarafından bilinebilir ve erişilebilir. Programında nesneye ait olmayan bileşenleri bu private kod ve verilere erişemez. Kod ve verilerimiz public ise, belirli bir nesnenin içinde tanımlansalar da programın diğer parçaları tarafından erişilebilirler. Nesnelere ait public elemanları private elemanlara denetlenebilir şekilde erişebilmek amacıyla kullanırız. Her ne sebeple olursa olsun, nesne, kullanıcı tarafından tanımlanan tipte bir değişkendir. Nesne tipi tanımladığımızda aslında yeni bir veri tipi oluşturuyoruzdur. Bu veri tipi de bileşik bir değişkendir.

SINIF HİYERARŞİSİ Nesneye-yönelik programlamanın, prosedürel programlamada bulunmayan, bir özelliği, tip hiyerarşisi tanımlayabilme yeteneğidir. Örneğin, C Dili bütün veri tiplerini birbirinden bağımsız olarak ele alırken, C++ bir sınıfın başka bir sınıfın alt-tipi olarak tanımlanmasına; sınıflar arası benzerlikleri bir ortak üst-sınıf altında toplamaya izin verir.

SINIF HİYERARŞİSİ Birkaç sınıf için ortak bir üst-sınıf tanımlama da bir tür soyutlamadır. Sınıfların ortaklaşa taşıdıkları bazı yönler üzerinde odaklaşıp diğerlerini göz ardı etmeye izin verir. Aslan, kaplan, ayı ve inek türünün üst-sınıfı ne olabilir? Hayvan Aslan Kaplan Ayı İnek

KALITIM Kalıtım nesne yönelimli programlamada önemli bir özelliktir. Kalıtım yolu ile eldeki sınıflardan yeni sınıflar türetilir. Türeyen sınıflar türedikleri sınıfın özelliklerini kalıtım yoluyla devralırlar ve kendisi de yeni özellikler tanımlayabilir. Türetme ile sınıflar arasında hiyerarşik bir yapı kurulabilir. Bir sınıf hiyerarşisi tanımlamanın 2 pratik faydası vardır: Türetilmiş sınıf üst-sınıfın kodunu paylaşabilir; Türetilmiş sınıf üst-sınıfın arayüzünü paylaşabilir.

KOD KALITIMI Eğer yeni bir sınıf tanımlıyorsanız ve mevcut bir sınıfın işlevselliğinden yararlanmak istiyorsanız, yeni sınıfınızı mevcut sınıftan türetirsiniz. Bu durumda kalıtım mekanizmaları size mevcut kodu yeniden kullanma imkanı sağlar. Örnek: Veri Girişi Formlarının tasarlanması.

ARAYÜZ KALITIMI Bir diğer kalıtım stratejisi, türetilmiş sınıfın üstsınıfının eleman fonksiyonlarının yalnızca isimlerini kalıtım yoluyla almasıdır. Türetilmiş sınıf bu fonksiyonlar için kendi kodunu kullanır. Arayüz kalıtımının temel faydası çok-biçimliliğe izin vermesidir. Örnek: Farklı veri tiplerindeki form girişleri ayrı ayrı alınır.

ÇOK BİÇİMLİLİK Genel anlamı ile bir adın birbiriyle alakalı fakat teknik açıdan farklı iki veya daha fazla amaç için kullanılabilmesi yeteneğidir. NYP de ise oluşturulan nesnelerin gerektiğinde başka bir nesne gibi davranabilmesine denir. Çok biçimlilikle programdaki her nesne kendi davranışını değiştirmeden, kalıtım hiyerarşisine göre farklı biçimlerde görülebilir.

Bir çok biçimlilik örneği Örneğin C dilinde, mutlak değer bulma işlemi için üç farklı fonksiyon tanımlıdır: abs(), labs() ve fabs(). Fakat çok biçimliliği destekleyen C++'da bu fonksiyonlar, abs() gibi tek bir isimle adlandırılırlar. Fonksiyonu çağırmak için kullanılan veri tipi, gerçekte hangi fonksiyonun çalışacağını belirler. Böylece bir fonksiyon adının birkaç farklı amaç için kullanılması mümkündür. Buna fonksiyonların aşırı yüklenmesi denir