oop
DESCRIPTION
OOP. Erişim Denetimi, Fonksiyon. Sınıf - Nesne. Sınıf , gerçek hayattaki bir nesneyi istenen bir şekilde modelleyebilmek için gerekli bütün kod ve veriyi içeren yazılım birimidir. Nesne sınıfın bir örneğidir. Somut bir niceliktir. - PowerPoint PPT PresentationTRANSCRIPT
OOP
Erişim Denetimi, Fonksiyon
Sınıf - Nesne
Sınıf, gerçek hayattaki bir nesneyi istenen bir şekilde modelleyebilmek için gerekli bütün kod ve veriyi içeren yazılım birimidir.
Nesne sınıfın bir örneğidir. Somut bir niceliktir.
Sınıf içindeki üye değişkenlere ve yöntemlere erişimin denetlenmesi üç farklı C# anahtar kelimesiyle sağlanır.
private: sınıf dışından görünmeyen değişkenlerin ve yöntemlerin tutulduğu bölümü işaretler
public: sınıf dışından görünen ve erişilebilen değişkenlerin ve yöntemlerin bulunduğu bölümü tanımlamak için kullanılır
protected: Türetilmiş sınıflardan erişilebilen değişkenlerin ve yöntemlerin bulunduğu bölümdür. Dışarıdan görülmez ama türetilmiş sınıflardan erişilir.
Sınıf tanımında varsayılan erişim denetimi private’dır.
Sınıf tanımına başlarken, hiç bir erişim denetimi anahtar kelimesi yazılmazsa, private olarak alınır.
ÖRNEKusing System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace ConsoleApplication1{ public class Nokta {
//fonksiyon dışında erişilemeyen değişkenler
private double x;
private double y;
// orijinden uzaklığı bulanfonksiyon tanımı
public double orijindenUzaklik() { Console.WriteLine("x number:"); int x =
Convert.ToInt16(Console.ReadLine()); Console.WriteLine("y number:"); int y =
Convert.ToInt16(Console.ReadLine()); return Math.Pow(x * x + y * y, 0.5);
} } }
Main(program.cs)
using System;using
System.Collections.Generic;
using System.Linq;using System.Text;
namespace ConsoleApplication1
{
class Program { static void Main(string[] args) { Nokta islem = new Nokta();
Console.WriteLine( islem.orijindenUzaklik());
Console.ReadLine();
} }}
Fonksiyonlar
Nesne Tabanlı Mimaride sınıflar için tanımlanmış özellikler:
Kapsülleme-Saklama(Encapsulation) Polimorfizm-Çok biçimlilik(Polymorphism) Kalıtım(Inheritance)
Bu özellikleri incelemeden önce sınıfların içerisinde tanımlanan fonksiyonları inceleyelim.
Fonksiyonlar
Fonksiyonlar belirli bir işi gerçekleştirmek amacı ile yazılmış değişkenler ve ifadeler kümesidir.
Belirli tipte parametreler alarak belirli tipte sonuçlar döndürürler. Programın diğer bölümlerinden tekrar tekrar çağırılabilirler.
yazım şekli :
dönen_tip FonksiyonAdı (Aldığı Parametreler)
Fonksiyon
Fonksiyonlar bir sınıf içerisinde bulunmalıdır. Bir sınıfın içerisinde bulunmayan, kendi başına bir fonksiyon yazılamaz.
yazım şekli:public class newClass{
public void newFunction(){
…………..}
}
Fonksiyon
void kelimesi, fonksiyonun herhangi bir değer döndürmeyeceğini belirtir.
() parantezleri Main'in bir fonksiyon olduğunu belirtir. Parantez içinde fonksiyona gönderilecek parametreler belirtilebilir. • Main(string[] args) fonksiyonu içine string[] tipinde değerler
gönderilebileceğini anlatan parametre kullanılmıştır.
Çoğunlukla fonksiyonlar parametre listesi isterler. Bu parametrelere göre işlem yapar ve sonuç döndürürler.
Fonksiyon
private float toplam(int a,int b,int c)
• toplam ismindeki fonksiyon a, b ve c isminde üç parametre istemektedir. •Fonksiyonun döndürdüğü sonuç değeri float tipindedir. •Ana programda fonksiyon çağrıldığında a, b ve c değişkenlerine, değer yüklenir.
Fonksiyonprivate float toplam( int a, int b, int c) {
float t; t = a + b + c ; return t; }
a, b ve c değişkenleri sadece toplam fonksiyonu içinde geçerlidir.
Fonksiyon içinde tanımlanan t değişkeni de sadece bu fonksiyon içinde oluşturulmuştur ve çıkışta silinir.
Scop içerisinde tanımlı yerel değişkenler
Fonksiyon
Fonksiyon return anahtar kelimesiyle bir değer döndürür.
Eğer dönen tip void olursa, return deyimi genelde kullanılmaz.
return anahtar kelimesinin döndürdüğü değişken veya değerin tipi fonksiyonun tanımında verilen tiple aynı olmalıdır.
Fonksiyon
private float toplam( int a, int b, int c) {
float t;t = a + b + c ;return t;
}
Fonksiyon
Fonksiyonun çağrılmasında, fonksiyon tanımı dikkate alınır.
Sadece veri tipleri yazılmaz ve değerler sabitler yada değişkenler olabilir.
Genellikle, fonksiyondan gelen değer bir değişkene atanır.
deger = toplam( i, j, k ) ; veya
deger = toplam( 5, x, 2.7 ) ;
Fonksiyon
NOT:
Main() fonksiyonu içinde toplam fonksiyonu çağrıldığında main()’in veri alanında bulunan değerler toplam() fonksiyonunun veri alanına kopyalanır.
ÖRNEK
Bir sayının faktöryelini alan fonksiyonu ve bulunduğu sınıfı yazınız.
• Fonksiyon 0'dan küçük değerler için 0 • 1 ve 0 için 1 • 2'den büyük sayılar için hesaplanan faktöriyel
değerini döndürecek.
Ana programda 1'den başlayıp klavyeden girilen değere kadar olan sayıların faktöryeli ekrana yazdırılacak.
class
using System;using
System.Collections.Generic;using System.Linq;using System.Text;
namespace ConsoleApplication2
{ class fonk {
public int Faktor(int x) { int sonuc = 1; if (x < 0) return 0; if (x == 0 || x == 1) return 1; for (int j = 2; j <= x; j++) sonuc =sonuc*j; return sonuc;
} }}
Main programusing System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace ConsoleApplication2{ class Program { static void Main(string[] args) { Console.WriteLine("sayi="); int y =
Convert.ToInt16(Console.ReadLine());
fonk a = new fonk(); for (int i = 1; i <= y; i++) {
Console.WriteLine(a.Faktor(i)); } Console.ReadLine(); } }}
SORU
Değerlerini kullanıcının belirlediği iki parametre alan, bu değerlerin farkının faktöryelini döndüren fonksiyonu yazınız.
Fonksiyonun ismi: int faktoryel_fark(int a, int b)