Jump to page: 1 2 3
Thread overview
Sınıf kullanımı nasıl
Jul 14, 2009
erdem
Jul 14, 2009
erdem
Jul 14, 2009
erdem
Jul 15, 2009
erdem
Jul 16, 2009
esatarslan52
Jul 16, 2009
erdem
Jul 16, 2009
erdem
Jul 17, 2009
erdem
Jul 17, 2009
erdem
Aug 03, 2009
Mengu
July 14, 2009

Deneme amacıyla şu bildik öğrenci sınıfını :) d ile yazmaya çalışıyordum.

#include <string>
using std::string;

class Ogrenci
{
public:
   Ogrenci (string const & ad, short numara)
       :
       ad_ (ad),
       numara_ (numara)
   {}

   /* .. */

private:
   string ad_;
   short numara_;
};


int main ()
{}

d versiyonu da bu şekilde:

import std.string;

class Öğrenci
{

   string ad_;
   short numara_;

public:
   this (string const & ad, short numara)
   : ad_ (ad), numara_ (numara)
   {}

}


void main ()
{}

ama derlerken bir sürü hata alıyorum:

Alıntı:

>

dmd ogrenci.d
ogrenci.d(10): found 'const' when expecting ')'
ogrenci.d(10): semicolon expected following function declaration
ogrenci.d(10): Declaration expected, not '&'
ogrenci.d(20): } expected following member declarations in aggregate

D dilinde const (değişmez) referans kullanmamıza gerek var mı? string const & ad gibi .. Bir de D dilinde sınıf bildiriminden hemen sonra ; kullanmaya artık gerek yok mu?

class BirŞeyler {} ; <-- burdaki noktalı virgül

gibi. Teşekkürler..

erdem

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 14, 2009

Teşekkürler. Bu arada ben bir mesaj yazana kadar siz iki mesaj yazmışsınız :-) O zaman : dan sonra kullanılan ilklendirme listelerini D'de kullanamıyoruz. Ben de tam bu mealde bir şeyler yazıyordum.

Bir de dizgi farkları (http://ddili.org/tanitim/fark_dizgi.html) makalesini de inceledim. Anladığım kadarıyla D dilinde hem

string birŞeyler

hem de

char[] birŞeyler

şeklinde dizgi tanımlayabiliyoruz. Yani ikisi de teorik olarak birbirinin aynısı ..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 14, 2009

Pardon immutable kavramı programlamada biraz farklıymış.
Alıntı:

>

In object-oriented and functional programming, an immutable object is an object whose state cannot be modified after it is created. This is in contrast to a mutable object, which can be modified after it is created. An object can be either entirely immutable or some attributes in the object may be declared immutable; for example, using the const member data attribute in the C++ programming language.

O zaman C++'de kullandığımız doğal std::string'in yerini D dilinde **char[] **almış oluyor. Yani D'de doğal dizgi türümüz char[] olmuş oluyor yanlış anlamadıysam..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 14, 2009

Ben de uğraşayım. const ve immutable'ı anlatan makaleyi gördünüz mü:

http://ddili.org/makale/degismez.html

Ya da genel olarak RSS beslemesinden yararlanıyor musunuz:

http://ddili.org/rss.xml

Her yeni sayfayı RSS'e ekliyorum...

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 14, 2009

Şu çalıştı:

import std.string;

class Öğrenci
{

   string ad_;
   short numara_;

public:

   this (string ad, short numara)
   {
       ad_ = ad;
       numara_ = numara;
   }
}

void main ()
{}

Herhalde string 'immutable char[]'ın eşdeğeri olmalı...

Ayrıca noktalı virgüle gerek olmayan yerler olduğunu biliyorum; nereleri olduğunu tam söyleyemem :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 14, 2009

Tabii D'de public'e gerek yok: modül (kaynak dosya), kendi içindeki her şeye erişebiliyor. Hatta oradaki 'public:' belki de bir etiket olarak kabul edilmiştir... (?) (Öğrenecek çok şey var! :p)

import std.stdio;
import std.string;

class Öğrenci
{
   string ad_;
   short numara_;

   this (string ad, short numara)
   {
       ad_ = ad;
       numara_ = numara;
   }
}

void main ()
{
   auto öğrenci = new Öğrenci("ayşe", 0) ;
   öğrenci.ad_ = "ali";
   writeln(öğrenci.ad_);
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 14, 2009

Aslında 'string' 'immutable char[]'ın bir 'alias'ı olmalı. Oradaki 'immutable'ın önemi var! Çünkü 'char[]' onlarla uyumsuz ve başka bir tür.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 14, 2009

Evet öyle... Ayrıca D'de 'string''ler de diziler gibi dilin iç olanakları... Kütüphane olanağı değil...

D'deki 'immutable' ve 'const' kavramlarının karşılığı C++'da 'const''tır. O makalenin sonunda güzel bir karşılaştırma tablosu var:

http://ddili.org/makale/degismez.html

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 15, 2009

Peki giriş çıkış operatörlerine nasıl farklı görev yükleyeceğiz:

class Ogrenci
{
public:
   Ogrenci (string const & ad, short numara)
       :
       ad_ (ad),
       numara_ (numara)
   {}

   /* .. */
   friend istream & operator>> (istream & giris, Ogrenci const &);

private:
   string ad_;
   short numara_;
};

istream & operator>> (istream & giris, Ogrenci const & ogrenci)
{
   ogrenci = ogrenciOku(giris);
   return giris;
}

D'nin örneklerinde sadece bir sayıyla karşılaştırılması olarak düşünmüş. Tabi burada giriş '>>' ve çıkış '<<' operatörleri yok ama..

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

July 15, 2009

'writeln()' ve arkadaşları zaten şablon oldukları için istediğimiz kadar parametreyle çağırabiliyoruz. Gönderdiğimiz türleri 'string''e dönüştüren 'toString()' üye fonksiyonlarını yazmamız yeterli:

import std.stdio;
import std.conv;

class BirÜye
{
   int değer_;

   this(int değer)
   {
       değer_ = değer;
   }

   string toString()
   {
       return to!(string)(değer_);
   }
};

class C
{
   int a_;
   int b_;
   int c_;
   BirÜye üye_;

   this (int a, int b)
   {
       a_ = a;
       b_ = b;
   }

   this (int a, int b, int c)
   {
       üye_ = new BirÜye(123);
       this (a,b);
       c_ = c;
   }

   string toString()
   {
       return "C{a:" ~ to!string(a_) ~
               " b:" ~ to!string(b_) ~
               " c:" ~ to!string(c_) ~
               "}";
   }
}

void main ()
{
   auto c = new C(7, 42, 1000);

   writeln("Merhaba", c, " - ", 1.2);
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2 3