C++ ile (OOP) Nesne Yönelimli Programlama : Kurucu ( Constructor ) Methodlar

  Рет қаралды 12,619

Yazılıma Gönül Ver

Yazılıma Gönül Ver

Күн бұрын

Пікірлер: 27
@mehmettalhabektas5468
@mehmettalhabektas5468 Жыл бұрын
constructor.
@YazlmaGonulVer
@YazlmaGonulVer Жыл бұрын
Selam Mehmet, Haklısın orda bi typo yapmışım. Katkın için teşekkürler. Başarılar diliyorum.
@YazlmaGonulVer
@YazlmaGonulVer Жыл бұрын
Selam arkadaşlar. 2:26' da kurucu methodlar private kısımda bulunmaz demiştim. Ancak Singleton olarak geçen tasarım örüntüsünde kurucular private olarak kullanım gerektiyor. Biraz detay bir konu ancak dileyenlerin araştırabilmesi adına buraya not olarak ekliyorum. Herkese başarılar.
@furkankalaycoglu4905
@furkankalaycoglu4905 4 жыл бұрын
gördüğüm en sade en başarılı anlatımlardan.
@YazlmaGonulVer
@YazlmaGonulVer Жыл бұрын
Selam Furkan, Teşekkürler. Faydası olduysa ne mutlu bana. Başarılar diliyorum.
@MustafaFurkanAKTAS37
@MustafaFurkanAKTAS37 9 ай бұрын
adam amme hizmeti veriyor yürü reis arkandayız🤩
@ilkeraykut7064
@ilkeraykut7064 5 жыл бұрын
Hocam Constructorda varsayılan değer veremiyorum.Yani Nokta n1; şeklinde yazınca hata veriyor.n1(1,3) gibi birşeyler istiyor.
@YazlmaGonulVer
@YazlmaGonulVer 5 жыл бұрын
Merhabalar. Kurucu methodlar da tanımlama kısmına dikkat ediniz burada = diyip değeri belirtmediyseniz varsayılan değer alamazsınız
@ilkeraykut7064
@ilkeraykut7064 5 жыл бұрын
@@YazlmaGonulVer hocam videodaki gibi yaptım hata veriyor.Dev c++ sürümü ile ilgili olabilir mi?
@YazlmaGonulVer
@YazlmaGonulVer 5 жыл бұрын
Merhabalar. Olabilir ayrıca parametresiz kurucu gibi kullanmak için sadece nokta n; şeklinde nesne tanımlayınız. Parametre verecekseniz parantezler ile kullanın. Bu şekilde dener misiniz.
@YazlmaGonulVer
@YazlmaGonulVer 5 жыл бұрын
#include using namespace std; class Nokta{ int x,y; public: Nokta(int = 2,int = 3); friend ostream& operatory = y; } ostream& operator
@ilkeraykut7064
@ilkeraykut7064 5 жыл бұрын
@@YazlmaGonulVer evet bu şekilde çalıştı hocam.
@AzeGamersWorld
@AzeGamersWorld 4 жыл бұрын
Hocam burada bende bir sorun oluştu videonun sonundu sizin söylediğiniz gibi yazdım amma bana no default constructor for exists class yazdı
@YazlmaGonulVer
@YazlmaGonulVer 4 жыл бұрын
Merhabalar. Hatanızın tam olarak nerede olduğunu görebilmek için kodlarınızı paste.ubuntu.com/ sitesine yükleyip linkini paylaşabilir misiniz. Sonra tekrar konuşuruz. Başarılar dilerim.
@neymarjrfan3513
@neymarjrfan3513 5 жыл бұрын
Hocam peki benim kitabımda kurucu fonksiyonun türü explicit şeklinde yazılmış bu nedir?
@YazlmaGonulVer
@YazlmaGonulVer 5 жыл бұрын
Merhabalar. Tam olarak neyin kast edildiğini bilmediğim için kitabın bir o sayfasının görüntüsünü a.altiok26@gmail.com adresine atarsanız, inceleyip yorumlama şansım olur. explicit in açık belirgin bir anlamı var fakat teknik olarak başka bir şey bahsedilmiş olabilir sizi yanlış yönlendirmek istemem.
@neymarjrfan3513
@neymarjrfan3513 5 жыл бұрын
@@YazlmaGonulVer Attım hocam.
@neymarjrfan3513
@neymarjrfan3513 5 жыл бұрын
@@YazlmaGonulVer son olarak hocam neden kurucu fonksiyonu yazarken "(:)" şeklinde kullanıyoruz ilginizden dolayı teşekkür ederim.
@YazlmaGonulVer
@YazlmaGonulVer 5 жыл бұрын
Merhabalar. Aslında : operatörünün neden konulduğunu bu eğitim serisinde anlattım. Seriyi izleme şansınız olursa bir çok aklınızdaki sorulara cevap bulabilirsiniz. Tabi gene takıldığınız yerlerde sorabilirsiniz. Yine de tekrar edecek olursak kurucu method çağrıldığında aslında bir nesne oluşturmuş oluruz. Fakat bazen const veya static (tabi normal türdeki değişkenlerde olabilir) değişkenlere ilk değer ataması nesne tamamen oluştuğunda değil oluşma esnasında atanmasını isteriz. Bu c++ syntax ından gelen bir kural olarak eğerki oluşma esnasında bir değişkene değer ataması yapılmak istersek bunu kurucu method çağrısından sonra : olarak değişkenlerimize hangi değerler atanmasını istiyorsak o değerleri belirterek de yapabiliriz. Aslında bu konunun önemi kalıtım alındığında ortaya çıkıyor. Kalıtım aldığımız sınıfa taban (Base ) sınıf, yeni oluşturduğumuz sınıfa da türemiş (Derived) sınıf dersek taban sınıftaki private bir özelliğe türemiş sınıftan hiçbir türlü ulaşma imkanımız olmaz. O özelliğimize ilk değer atamasını yine taban sınıfın kurucu methodunu çağırarak yapmalıyız ve burada : operatörü kullanılır. Örneğin Derived(int x,int y) : Base(x),y(y) gibi -> buradaki methodların ikiside kurucudur. fakat birisi türemiş sınıfın diğeri taban sınıfın kurucusudur. Bu şekilde ulaşamadığımız private bir özelliğe de ilk değer ataması yapabilmiş oluruz. Umarım açıklayabilmişimdir başarılar.
@YazlmaGonulVer
@YazlmaGonulVer 5 жыл бұрын
Merhabalar. Mailinizi aldım, öncelikle sorunuz için teşekkür ederim. Bu eğitim serisinde değinmediğim bir konu olduğundan dolayı bu konuyu da eğitim serisi bittikten sonra ekstra video eğitim olarak anlatmaya çalışacağım. Tabi sizinde bu kadar beklememeniz için yaptığım birkaç araştırmada şu bilgilere ulaştım. Explicit kelimesi ingilizce de sözcük anlamı olarak açık, belirgin bir anlama geldiğini söylemiştim. Bu kelimenin zıt anlamlısıda İmplicit miş o da gizli, örtülü, kapalı şekilde anlamları var. Bu kelimeleri şundan dolayı söylüyorum. Zaten bilgisayar bilimlerinde hatta İşletim sistemi ve sistem programlama derslerinde sıkça geçer ve bu kelimelerin Bilgisayar Bilimlerindeki teknik anlamı da aslında % 90 oranında gerçek anlamına benzer. Şimdi asıl konuya dönelim. Bir kurucu methodun hiçbir şekilde türü olmaz. Yani sizin bahsettiğiniz kurucu methodun başında explicit kelimesinin kullanılması kurucu methodun türü değil. Kuralıdır. Normalde bu kelimeyi kullanmadığımızda varsayılan olarak İmplicit yani gizli, örtülü anlamdaki kurala kurucu methodlar davranır. Burada kural olarak bahsettiğim şey ise bir nesne oluşturulduğunda eğerki uygun tipte bir nesne gelmez ve derleyici bunu uygun hale döndürme imkanı varsa burda implicit kuralı geçerli oluyor. Yani derleyicimiz gizli bir şekilde tip dönüşüm işlemleri yapacaktır. ( Tabi tekrar belirtelim uygun dönüşüm imkanı varsa ), diyelimki explicit olarak yazdık ve burada kuralımız koyduk. Burada artık derleyicimiz bir nesne oluşurken uygun tipte bir değer gelmezse kendisi bir dönüşüm yapmayacaktır ve hata verecektir. Eğer hata almak istemiyorsak nesnelere her zaman uygun tipte bir değer ataması yapmak zorundayız. Burada bahsettiğim özetçe biz nesnelerimizi oluştururken nasıl oluşturacağımıza dair bir tip dönüşüm kuralı belirliyoruz diyebiliriz. Örnek vermek gerekirse class A{ public: A(int){//kurucu method} }; int main(){ A a = 1; return 0; } şeklinde bir kullanım da bizim kurucumuz bir int parametresi bekliyordu ve biz a(1) şeklinde değilde a = 1 şeklinde yine aynı parametreyi verdik. Burada derleyicimiz hata vermez çünkü kendi dönüşüm mekanizmasıyla bu dönüşümü yaptı ve nesneyi oluşturabildi. Fakat sınıfı oluştururken kurucu methodun başına explicit kelimesini yazarsak artık bu programı derleyemeyiz. Çünkü derleyici dönüşüm yapmaya çalışmayacaktır. Her ne kadar nesne int parametre beklesede ve biz ona int parametreyi a= 1 şeklinde versekde dönüşümü yapmaz. Tabi explicit yazdıktan sonra tekrar hata almak istemiyorsak burada A a(1) şeklinde nesnemizi oluşturmamız gerekir veyahutta yine c++ içerisinde bulunan type_casting sınıfını kullanarakta dönüşüm işlemini kendimiz yapmak isteyebiliriz. Yani a = type_casting(1) dediğimizde de herhangi bir hata almayız. Çünkü buradaki dönüşümü derleyici değil kendimiz yapmış oluruz. Peki buna neden ihtiyacımız var şeklinde düşünebilirsin. Normalde bilgisayarların aptal birer makine olduğunu ve sadece sayılardan anladığını unutmamalıyız. Yani biz şu şekil bir sınıf oluşturursak ; class B{ B(int,char){} }; Burada B sınıfının kurucusu int ve char parametre bekliyor. Biz B b = {1,'A'} şeklinde bir kullanımla hata almayız. Zaten bir char veya bir int parametre vermiş oluruz. Fakat gene aynı şekilde B b= {1,65} şeklinde bir nesne oluşturursak yine hata almayız. Burada dikkat etmemiz gereken 65 olarak verdiğimiz sayısal rakam aslında bir char yani ascii karakter tablosundaki 'A' karakterine denk geldiğinden dolayı derleyici burada tip dönüşümünü kendisi otomatik yaparak yine b nesnesini oluşturdu fakat 65 yerine 321321 şeklinde bir sayı girseydik yine derleyici dönüşüm yapardı fakat anlamsız bir char elde ederdik. Bu durum ve benzeri durumları önlemek için kurucu methodun tip dönüşüm kuralını explicit olarak belirlersek artık biz kendi nesnelerimizi oluştururken kendi dönüşüm kurallarımızla veyahutta sadece o sınıfın kurucu methodunu çağırarak yapabilir. Yaptığım araştırmalarda edindiğim bilgileri aktarmaya çalıştım. Umarım açıklayabilmişimdir. Eğerki kafana takılan bir durumda tekrar sorabilirsin. Başarılar
ВЛОГ ДИАНА В ТУРЦИИ
1:31:22
Lady Diana VLOG
Рет қаралды 1,2 МЛН
C++ ile (OOP) Nesne Yönelimli Programlama : Yıkıcı (Destructor) Methodlar
9:35
E-Tablo-02: Excel'de Formüllerle Çalışma
1:14:01
Zafer Yavuz
Рет қаралды 76
C++ ile (OOP) Nesne Yönelimli Programlama : Kalıtım (Felfesi ) Giriş
14:43
Yazılıma Gönül Ver
Рет қаралды 12 М.
C++ ile (OOP) Nesne Yönelimli Programlama :  Sabit Nesneler ve Sabit Methodlar
8:37
C++ ile (OOP) Nesne Yönelimli Programlama : Çok Şekillilik  ( Polymorphism )
11:40
C++ ile (OOP) Nesne Yönelimli Programlama : Statik Özellikler ve Methodlar
13:26
ВЛОГ ДИАНА В ТУРЦИИ
1:31:22
Lady Diana VLOG
Рет қаралды 1,2 МЛН