Welcome to My Blog 👋

Java, Spring Framework, Microservices, Docker, Kubernetes, AWS and Others 🚀
Follow Me
Showing posts with label nesneye yönelik programlama. Show all posts
Showing posts with label nesneye yönelik programlama. Show all posts

Bilindiği üzere Java'da ve diğer nesne tabanlı programlama dillerinde sınıfların değişkenlerine doğrudan erişime izin verilmez ve public olarak tanımlanan getter ve setter metotları ile bu değişkenlere erişimler sağlanır. Değişkenin public olarak tanımlanıp değişkenin değerinin değiştirilmesi ile getter ve setter metotlarının tanımlanıp değişkenin değerinin değiştirilmesi arasında bir fark yoktur. Bu işlemin bu şekilde yapılmasının bir amacı vardır. Bu amaç sınıfın değişkenlerinin alabileceği değerleri kontrol etmektir. En basitinden bir örnek vermek gerekirse insan sınıfının yaş değişkeninin eksi bir değer almasını istemeyiz. Doğrudan değişkene erişim olduğunda bu değişkenin değeri hesap edemediğimiz bir şekilde eksi bir değer alabilir. Ancak biz getter ve setter metotları ile bu değişkene erişimi sağlarsak bu metotların içerisinde değişkene atanacak değerleri kontrol ettirebiliriz. Java ve diğer nesne tabanlı programlama dillerinde kullanılan getter ve setter metotlarının ana amacı budur.


Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü nesneye yönelik analiz ve tasarım dersi için yaptığım restoran sistemi uygulamasıdır. Bu dersin amacı bir projeyi kodlamadan önce analiz etmek, tüm kodu tasarlamak ve tasarlanan projeyi koda dökmektir. Bu derste öncelikle gereklilikleri analiz ettik daha sonra projemizin tüm sınıf, fonksiyon ve değişkenlerini kağıt üzerinde tasarladık. Daha sonra bu kağıt üzerindeki tasarımı direkt olarak koda döktük.
Bu dersin ana amacı projemizi katmanlara ayırarak daha sonra bir katmandaki değişikliğin diğer katmanlara müdahale etmeden gerçekleştirilebilmesidir. Yani mesela arayüz, normal sınıflar ve veritabanı gibi bölümlerin birbirinden ayrılmasıdır. Yani projemizi yazdıktan sonra belki yıllar sonra veritabanını değiştirmek istersek sadece veritabanı kodlarını değiştirerek diğer hiç bir sınıfa müdahale etmeden gerçekleştirmemizi sağlıyor. Ayrıca bu dersin ana amaçlarından bir diğeri ise tasarım kısmının kağıt üzerinde yapılması ile yıllar sonra projeye geri dönülüp düzenlenmek istendiğinde elimizdeki dökümanlar ile bu işin çok kolay bir şekilde yapılabilmesidir.

Analiz Ve Tasarım


Kodlama(Java)




Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü nesneye yönelik programlama (C++) ders notlarım.



Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü nesneye yönelik programlama (C++) ders notlarım.


#include <iostream>
using namespace std;
//dizinin en büyük elemanının değerini referans operatörü ile 0 yapmak
int& fonk(int a[],int sinir){
    int j=0;
    for(int i=0;i<sinir;i++){
        if(a[i]>a[j])j=i;
    }
    return a[j];
}

int main()
{
   int dizi[5] = {1,55,33,7,16};
   fonk(dizi,5) = 0;
   cout<<dizi[1];
}



Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü nesneye yönelik programlama (C++) ders notlarım.

Ostream


#include <iostream>

using namespace std;

class tarih{
    int gun,ay,yil;
public:
    tarih(int g,int a,int y){
    gun = g;  ay=a;   yil=y;
    }
    friend ostream& operator<<(ostream& os,const tarih& t);
};

ostream& operator<<(ostream& os,const tarih& t){
                    os << t.gun << '/' << t.ay << '/' << t.yil;
                    return os;
}
int main()
{
  tarih t(5,6,92);
  cout << t;
}


Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü nesneye yönelik programlama (C++) ders notlarım.

#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;

/** SORU: KİŞİ SINIFINDAN TÜRETİLMİŞ OLAN ÖĞRENCİ VE ÖĞRETMEN SINIFLARININ TASARLANMASI İSTENMEKTEDİR.
İLGİLİ SINIFLARIN ORTAK OLAN ADI, SOYADI, TC_KİMLİK_NO, ADRES VERİ ÜYELERİ VE BUNLARA İLGİLİ ATAMALARI YAPIN.
SET FONKSİYONLARI OLSUN. ÖĞRENCİ SINIFININ ÖĞRENCİNİN OKUDUĞU OKUL BİLGİSİ VE ÖĞRETMENİN DERS VERDİĞİ OKUL BİLGİLERİNİ
KAYDEDEN VERİ ÜYELERİMİZ VE İLGİLİ SET FONKSİYONLARIMIZ OLSUN. BU SINIFINA AİT DETAY AÇIKLAMALARI YAPARAK TASARLAYINIZ! **/

class kisi{
public:
    string adi, soyadi, adres;
      int TCKimlikNo;
      kisi(string, string, string, int);
      void set_adi(string);
      void set_soyadi(string);
      void set_adres(string);
      void set_TCKimlikNo(int);
      void print();
};

void kisi::set_adi(string a){
     adi = a;
}

void kisi::set_soyadi(string s){
     soyadi = s;
}

void kisi::set_adres(string ad){
     this->adres = adres;
}

void kisi::set_TCKimlikNo(int no){
     TCKimlikNo = no;
}

kisi::kisi(string a, string s, string adres, int no){
                  set_adi(a); set_soyadi(s); set_adres(adres); set_TCKimlikNo(no);
}

void kisi::print(){
     cout << "adi: " << adi << endl;
     cout << "soyadi: " << soyadi << endl;
     cout << "adres: " << adres << endl;
     cout << "TC Kimlik No: " << TCKimlikNo << endl;
}

class ogrenci: public kisi{
public:
    string o_okul;
       ogrenci(string, string, string, int, string);
       void set_o_okul(string);
};

void ogrenci::set_o_okul(string o){
     o_okul = o;
}

ogrenci::ogrenci(string aa, string ss, string adress, int noo, string o){
                        kisi::set_adi(aa); kisi::set_soyadi(ss); kisi::set_adres(adress); kisi::set_TCKimlikNo(noo);
                        set_o_okul(o);
}

void ogrenci::print(){
     kisi::print();
     cout << "okudugu okul: " << o_okul << endl;
}

int main(int argc, char *argv[])
{
    ogrenci o1("AHMET", "SONMEZ", "BARBAROS MH. CANAKKALE", 57654867, "ATATURK ILKOGRETIM OKULU");

    o1.print();

    system("PAUSE");
    return EXIT_SUCCESS;
}


Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü nesneye yönelik programlama (C++) ders notlarım.

Dinamik Nesne


#include <iostream>

using namespace std;
int x=0;
class sinif{
public:
    int x,y,z;
    sinif(int,int);
    void topla();
    void print();
};
sinif::sinif(int a , int b){
    x=a;
    y=b;
    ::x=::x+1;
}
void sinif::topla(){
    z=x+y;
    cout <<"Sayilar toplami= "<<z<<endl;
}
void sinif::print(){
    cout <<::x<<"Kere Cağırılmıştır"<<endl;
}

int main()
{
    sinif nesne1(1,2),nesne2(3,4),nesne4(5,6),nesne(7,8),nesne8(11,23);
    nesne1.topla();
    nesne2.topla();
    nesne4.print();
}



Çanakkale Onsekiz Mart Üniversitesi Bilgisayar Mühendisliği Bölümü nesneye yönelik programlama (C++) ders notlarım.

Arkadaş Fonksiyonlar


#include <iostream>

using namespace std;

class sinif{
public:
    friend class sinif2;
    int x,y;
    int alan();
    sinif();
};
sinif::sinif(){
    x=3;
    y=4;
}
int sinif::alan(){
    return x*y;
}
class sinif2{
public:
    int z,w;
    int hesapla(sinif a);
    sinif2();
};
sinif2::sinif2(){
    z=1;
    w=2;
}
int sinif2::hesapla(sinif a){
    cout<<a.alan();
}

int main()
{
    sinif2 nesne2;
    sinif nesne;
    nesne2.hesapla(nesne);
}