Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => C/C++ => Konuyu başlatan: gerbay - 13 Ekim 2016, 18:06:47

Başlık: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: gerbay - 13 Ekim 2016, 18:06:47
girişte pano da yazışıyorduk da gelip buraya da konusunu açayım dedim.

arkadaşlar kullanmasanız bile en azından ne olduğunu bildiğiniz Arduino, mbed gibi platformların arkasındaki güç C++ dili ile yazılmış kütüphanlerdir. C++ ın çıktığı yer e doğru gidecek olursak da C ile yapılan bir programlama tekniği karşımıza çıkar.

Object Oriented Programing (OOP) ya da Nesne Yönelimli Programlama (NYP) konsepti C++ da yerleşik olarak desteklenir. C de ise bunu emüle edebilirsiniz.

OOP yaklaşımı önemlidir, çünkü karmaşık projeler yapmayı daha kolaylaştırır.

Alıntı Yap
1960'lı yılların sonuna doğru ortaya çıkan bu yaklaşım, o dönemin yazılım dünyasında beliren bir bunalımın sonucudur. 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. NYP'yi bu soruna karşı bir çözüm haline getiren başlıca özelliği, yazılımda birimselliği (modularity) benimsemesidir. NYP ayrıca, bilgi gizleme (information hiding), veri soyutlama (data abstraction), çok biçimlilik (polymorphism) ve kalıtım (inheritance) gibi yazılımın bakımını ve aynı yazılım üzerinde birden fazla kişinin çalışmasını kolaylaştıran kavramları da yazılım literatürüne kazandırmıştır. Sağladığı bu avantajlardan dolayı, NYP günümüzde geniş çaplı yazılım projelerinde yaygın olarak kullanılmaktadır.

Alıntı Yap
NYP'nin altında yatan birimselliğin ana fikri, her bilgisayar programının, etkileşim içerisinde olan birimler veya nesneler kümesinden oluştuğu varsayımıdır. Bu nesnelerin her biri, kendi içerisinde veri işleyebilir, ve diğer nesneler ile çift yönlü veri alışverişinde bulunabilir. Hâlbuki NYP'den önce var olan tek yaklaşımda (Yordamsal programlama), programlar sadece bir komut dizisi veya birer işlev (fonksiyon) kümesi olarak görülmektedirler.

"Yordamsal programlama" denilen yöntem "prosedürel programlama" da dediğimiz ve forumda bir çok arkadaşın da kod yazdığı yöntemdir.

OOP dan önce kullanılan yöntemlerde yazılım karmaşıklaştıkça bakım maliyeti üstsel olarak artmaktadır.

(https://upload.wikimedia.org/wikipedia/tr/3/36/UygulamaBakimMaliyeti.PNG)

OOP bu soruna çözüm getirmiştir.

C++ bilmeyen forum üyeleri için de C ile nasıl OOP yapılır sorusunun cevabı şurada anlatılıyor;

http://www.state-machine.com/doc/AN_Simple_OOP_in_C.pdf (http://www.state-machine.com/doc/AN_Simple_OOP_in_C.pdf)

C bilen arkadaşlar burada anlatılan mevzuyu anlayıp teknik olarak kullanabileceklerini düşünüyorlarsa kolaylıkla C++ a geçebilirler..
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: Cemre. - 13 Ekim 2016, 18:38:14
Hocam ben dökümandaki örnekleri deneyip üzerinde oynamak istiyorum, PC'de code::blocks 16.01 yüklü, C Console projesi açsam olur mu?
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: MC_Skywalker - 13 Ekim 2016, 18:43:04
Proje açmana gerek yok. C dosyanı herhangi bir editörle oluştur.  ve derleyici le konsolda derle.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: X-Fi - 13 Ekim 2016, 18:52:22
Benim tavsiyem DevC++ ile MinGW compiler beraber kurup oradan öğrenmen bu ikisi ile bilgisayarda FreeRTOS u bile çalıştırabilirsin.

Daha önce denemiştim http://i.hizliresim.com/dXdODQ.jpg (http://i.hizliresim.com/dXdODQ.jpg)
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: mufitsozen - 13 Ekim 2016, 20:50:18
Alıntı yapılan: gerbay - 13 Ekim 2016, 18:06:47
girişte pano da yazışıyorduk da gelip buraya da konusunu açayım dedim.

Baskalarinin acitigi basliklara yazmiycam diye kendime soz v eriyorum, sonra boyle cumleler gorup dayanamiyorum

sevgili @gerbay bu forumda:

karsilastirmasinin en ufacik imasini iceren basliklar en fazla 8 mesaj sonra Anani, Muptezel Peze..., motunu mik...im, Muhatabim değilsin, Haddini bil, Kafir, dinsiz  filan seklinde seviyeli tepismelere donuyor.

LUTFEN sende bu olguyu idrak et ve dikkatli ol.

Actigin baslikta verdigin AN bastan sona bagli listeler VEDE C dili- C++ filan karsilastirmali. Arkadas bu forumdan atilmakmi istiyorsun, Uyelere garezinmi var? Isteyen zaten ogrenir, baska isinmi kalmadi?

En iyisi sen su ayin karanlik yuzundeki uzaylilarin ussu gercekmi değilmi onu anlat.  :P
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: mufitsozen - 13 Ekim 2016, 21:57:40
Vayyyt "Ates Serbest" ha!!

o zaman forumdaki sessiz cogunluk icinde bu konuyla ilgilenenlere bir onerim olacak. Biraz eski olmasina ragmen  C++'da kullanilan yapilari ve nasil implement olduklarini aciklayan "inside the c++ object model" diye meshur stanley lippman'in kitabi var. Bunun 1996 1. baskisinin pdf/chm kopyalari internetde bulunabiliyor (bulamayanlar OM ile benden isteyebilirler) Ama ben 1998'de yapilan 2. baskiyi bulamadim. Konu ile alakamda sadece merak seviyesinde oldugu icin satin almak istemedim. AMMA bu ebook'u bulan birisi olur ise aradigi yada isteyebilecegi baska bir konudaki herhangi bir ebook ile degis tokus yapmak isterim  ;)

Zannimca @Klein gibi uyeler bu kitabi cok faydali bulacaktir.

Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: muhittin_kaplan - 13 Ekim 2016, 22:49:16
İnsallah pek yakinda o tur seyler olmayacak...
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: muhittin_kaplan - 13 Ekim 2016, 22:57:13
ben pek te anlamam bu işlerden, yaz derlesin, oop muş felan iş çıkartıyorsun başımıza.
(hocam yarına attım o işi. )
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: muhittin_kaplan - 13 Ekim 2016, 22:59:01
Benim OOP dan anladığım Nesneler, Sınıflar, Metodlar hocam. Oda c# dan.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: muhittin_kaplan - 13 Ekim 2016, 23:01:20
Alıntı yapılan: gerbay - 13 Ekim 2016, 22:58:29
hocam C++ diyordun ya..

bize for dummies kıvamında lazım hocam, ayrıca "sanallaştırmadan", bir proje de kullanmamız lazım, zira gözüyle düşünen bir toplumuz.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: baran123 - 13 Ekim 2016, 23:29:14
Hocam öncelikle bu güzel paylaşım için teşekkürler :)
Bende çok severim OOP, MOOP :) C# dan olsa gerek.
Tabi C++ da olsa da bildiğim kadarıyla C de bu işler pek yok. (Belkide vardır ?)
C de şöyle enum, structure, union falan filan bayılırım kullanmaya !
Donanımlara böyle kütüphane yapmaya başladım mesela

HTU21D_t HTU21D; // Sıcaklık-nem sensörüdür kendisi
   
HTU21D_Init(&HTU21D);

HTU21D_ReadTempeature(&HTU21D);
       
UART_Write((uint8_t)HTU21D.Temperature);

Bunlar iyi güzel ama C de şöyle bir kullanım mümkün mü ?
uint8_t tmp = HTU21D.ReadTempeature();
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: baran123 - 13 Ekim 2016, 23:33:36
Hocam biraz bişler yapsak takla falan attırsak modifiye etsek de benim dediğim gibi olmaz mı ? :(
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: RaMu - 13 Ekim 2016, 23:41:42
Güzel konu, takipteyim.

Alıntı yapılan: gerbay - 13 Ekim 2016, 23:04:08
ama hocam "virtual" method olmadan polimorfizim olmaz..  hocam C bilenlere C++ ı anlatmak için arka planda ne olduğunu C ce anlatmış adam. açık, net, kısa ve öz..
Biz C bilmiyoruz ki,
C kullanıyoruz, hem kelliğede iyi geliyormuş,
saç baş yoldurmuyormuş.

Önce C yi tam öğrenebilsek,
kendimden söyleyeyim,
Deitelin kitabından bir girmiştim olaya,
kaç yüz sayfa kitap,
baba oğul yazmışta yazmışlar,
üşendim pek bir şey öğrenemedim,
İngilizcem iyide, C ancak kendime yetecek kadar.

@muhittin_kaplan hocamla aynı düşünüyorum,
biz kasap olabilen kedilerdeniz,
uygulamalı görsek yeter.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: muhittin_kaplan - 13 Ekim 2016, 23:52:19
c bilmeden c# öğrenebiliyorsak, ASM bilmeden C öğrenebiliyorsak, C bilmeden de C++ öğrenebiliriz.


mesaj birleştirme:: 13 Ekim 2016, 23:53:08

"forum üzerinden başka türlü olmaz.."

olur Örnek STM ve z.

siz bir plan dahilinde gidersiniz öğrenmek isteyen takip eder.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: baran123 - 14 Ekim 2016, 00:13:40
Alıntı yapılan: gerbay - 13 Ekim 2016, 23:50:20
yazdığım gibi olmasında ne sakınca var. sizi rahatsız eden nedir?

@RaMu

hocam hangi kısmını uygulamalı görmek istiyorsunuz ki?

o zaman yüzlerce uygulama yapmak lazım.

daha önce şunu bunu öğrenelim diye açılan konular için örüşüm şudur;

açarsınız kaynakları öğrenmeye çalışırsınız, anlamadığınız yerleri forumda sorarsınız, tartışılarak açıklanmaya çalışılır.

forum üzerinden başka türlü olmaz..
Yok hocam sadece meraktan :)
Hocam beni gece gece nelere bulaştırdınız. :D
Ne yapıyorum ben ya ?

/*
* File:   main.c
* Author: Baran EKREM
* Created on 13 Ekim 2016 Perşembe, 23:40
*/
#include <stdio.h>
#include <stdlib.h>

typedef unsigned char uint8_t;

typedef struct {
    int (*ReadTempeature)(struct _HTU21D_t *self);
    uint8_t tmp;
    uint8_t hum;
} HTU21D_t;

static void HTU21D_ReadTempeature (HTU21D_t* HTU21D) {
    HTU21D->tmp = 50;
    return 0;
}

static void HTU21D_Init (HTU21D_t* HTU21D) {
    HTU21D->ReadTempeature = &HTU21D_ReadTempeature;
}

int main (void) {
    HTU21D_t HTU21D;
   
    HTU21D_Init(&HTU21D);
   
    (HTU21D.ReadTempeature)(&HTU21D);
   
    printf("Temp : %d", HTU21D.tmp);
   
    for (;;) {
       
    }

    return (0);
}

// Output : Temp : 50
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: Klein - 14 Ekim 2016, 00:16:24
Alıntı yapılan: baran123 - 13 Ekim 2016, 23:33:36
Hocam biraz bişler yapsak takla falan attırsak modifiye etsek de benim dediğim gibi olmaz mı ? :(

typedef struct
{
        uint16_t x;
uint16_t (*Function)(int,int);
}TObjType;

TObjType Obj;

uint16_t topla(uint16_t a, uint16_t b)
{
      return(a+b);
}
uint16_t carp(uint16_t a, uint16_t b)
{
return(a*b);
}

int main(void)
{
uint16_t toplam, carpim;
     Obj.Function = topla;

    toplam = topla(3,5);

    Obj.Function = carp;

   carpim = Obj.Function(12,8);
}


Bu şekilde yapılabilir.  Ama konu C++ olduğu için, C++ bunu daha kolay bir şekilde üye fonksiyon olarak yapar. Tabi kalıtım ve polimorfizim gibi avantajları ile birlikte.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: muhittin_kaplan - 14 Ekim 2016, 10:19:31
@gerbay hocam z ile asm konusuna yazdığınız kadar, yada karanlık ay yüzeyi benzeri konulara yazdığınız kadar yazsanız, iki günde üç günde bir konuya eklemeler yapsanız bizde "sizin önereceğiniz derleyici/ide" ile bunları gerçekleştirsek. aslında ne güzel olur. dikili bir ağacınız  olur hocam.

deitel in kitabından  gidebiliriz. (ben xamarin konusunu Yiğit Özaksüt ün videolarından adım adım gidiyorum, video çekip koyuyorum hocam.)

isterseniz olur.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: muhittin_kaplan - 14 Ekim 2016, 10:49:09
Hocam, Ne diyeyim. haklısınız.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: yldzelektronik - 14 Ekim 2016, 10:56:44
Alıntı yapılan: gerbay - 14 Ekim 2016, 10:42:00
hocam zaman zaman konuyu açmaya çalıştık. ama tepkiler başka yöne kaydırdı. konu devam etmedi. aslında şu an yazdığınız bu konu bile bununla ilgili ama farkındalık yok. siz bile farkında değilsiniz.

insan da verdiği emeğin boşa gitmesini istemiyor. bakın mesela bu konuda verdiğim PDF de anlatılan şey tamamen C++ derleyicisinin arka planda ne yaptığını anlatıyor.

ben insanlar bunu anlayabiliyor mu onu bile bilmiyorum ki benim şahsem gördüğüm kadarıyla bir tek @Klein hocam bu konulara aşina ve biliyor.

şimdi baktım bu konu 506 kez gösterilmiş şu ana kadar. hadi 250 kişinin PDF i açıp göz attığını bundan da 120 kişinin bir şeyler anladığı kabulunu yapalım.

bakın o PDF de C ce anlatılıyor, yani bodoslama arka planda ne olduğu anlatılmadan C++ ile dalmamış olaya..

konuya baktığınız zaman geri dönüş yok. bu forumda C ile o kadar kod yazan adam var ama buradaki mevzuyu ne kdar kişi anlamış?

herkes anlamış demekki çünkü kimse tartışmıyor.

hoca ders anlatır da sınıfın gözlerine bakar ya; sınıf ta tepki yok, hatta hoca ile göz göze gelmemek için gözlerini kaçırırlar. şu an konu böyle hocam..

bu konudaki anlatılan şey C bilenleri C++ a geçirebilmek için en temel şey aslında..   ama tepki yok.. farkındalık yok..  hatta siz bile konuya aslında girdiğimizin farkında değilsiniz..

Abi aslında hayır.Kendi adıma mevzu öyle değil. Şuan iş yerindeyim ve başka bir konuyla ilgilenmem gerekiyor.Ancak kaçamak yapabildiğim ölçüde bakıyorum/bakmaya çalışıyorum. Cloud a attım. ("Kafayı yedir"tse de) cloud tan çekip okuyacağım.Ya metroda ya öğle arasında.Bir şekilde.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: skara1214 - 14 Ekim 2016, 11:44:25
Alıntı yapılan: gerbay - 14 Ekim 2016, 10:42:00
hoca ders anlatır da sınıfın gözlerine bakar ya; sınıf ta tepki yok, hatta hoca ile göz göze gelmemek için gözlerini kaçırırlar. şu an konu böyle hocam..
bu konudaki anlatılan şey C bilenleri C++ a geçirebilmek için en temel şey aslında..   ama tepki yok.. farkındalık yok..  hatta siz bile konuya aslında girdiğimizin farkında değilsiniz..
hocam genel olarak böyle paylaşımlar böyle sonuçlar doğuruyor haklılık payınızın olduğunuda düşünmüyorum zira;
-sizin istediğiniz yüksek lisans doktorada yapılan makale tartışma toplantısı havasında olsun ama böyle birşey mümkün değil .İlkönce temelden c nin belli seylerini anlatırsınız(anlatmak zorunda değilsiniz sadece şahsi görüşüm) insanların ilgisini toplarsınız. daha sonra yavaştan seviyeyi yükseltirsiniz insanlarda sizi takip etmeye başlar. Ama bu şekilde yaptığınız şeyin örneğini vereyim; İlkokulda öğretmen sınıfa girer;
-Arkadaşlar okumak çok güzel birşey herkes okusun okumayıda su kitaptan öğrenin. Bu şekilde nasıl olacak?
Bu sizin mantığınızla üniversiteye gerek yok hocayada gerek yok nasıl olsa kitaplar var demekki birilerininde kitaptakileri insanlara anlatmasına ihtiyaç var. Sakın ha söylemlerimi bunları yapmak zorundasın diye algılamayın sadece daha efektif olması için bu şekilde daha mantıklı gibi.
oysaki z gibi baştan sona arm yi anlatsanız mükembel olur. Yukarıda zamanım yok demişsiniz haklısınız zaten bu bahsedilen 1 ayda olması önemli değil 1 sene sürsün ama ayrıntılı olsun herkes nasiplensin.
Sizin gibi bir paylaşımda ben yapayım;
Arkadaşlar RTOS çok güzel birşey kesin kullanın ;
http://www.freertos.org/about-RTOS.html (http://www.freertos.org/about-RTOS.html)
buradan okuyun rtos kullanmaya başlayın...

Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: X-Fi - 14 Ekim 2016, 11:55:50
@gerbay hocam sayfa 8 deki sanal fonksiyonlar konusunda vtbl hem static hemde const oalrak tanımlanmış bunun sebebini anlamadım,

ROM da olacak ve tüm sanal fonksiyonlarda tek fiziksel adresten işlem görecek gibi bişeymi?
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: baran123 - 14 Ekim 2016, 14:24:02
@gerbay hocam anladım şimdi çok teşekkür ederim.
@Klein hoca örnek için teşekkürler.

C++ ile programlanan bir MCU var mı ?
Arduinoyu bu amaç için kullanmayı planlıyorum aslında.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: Cemre. - 19 Ekim 2016, 01:05:26
http://www.state-machine.com/qpc/blinky.html (http://www.state-machine.com/qpc/blinky.html)

Hocam ben bu state machine tabirine hiç aşina değilim. Misal aşağıdaki linkte çokça geçiyor. Blinky example'ına baktığımda gözüm korktu açıkçası.
Bir de ultra simple diye üstüne basa basa söylemişler, daha da korktum. Şimdi aşağıdakinden daha mı simple?

BSF PORTB,0
BCF PORTB,0

Hocam öğrenmek istiyorum. Yazılım konusunda eğitim almadım, aldığım eğitimler syntax üzerineydi ve tabi ki bunların 1000'de 1'ini gösteren, bak bi de böyle birşey varmış diyen olmadı. İhtiyaç da duymamıştım açıkçası ama kod okunurluğu, portabilite, düzen diyince durup bir ben de bunu arıyorum diyorum. Ne yapmak gerek? @CoDeR

mesaj birleştirme:: 19 Ekim 2016, 01:05:41

http://www.st.com/content/ccc/resource/technical/document/user_manual/6b/fd/49/38/73/a2/4a/9c/DM00072014.pdf/files/DM00072014.pdf/jcr:content/translations/en.DM00072014.pdf (http://www.st.com/content/ccc/resource/technical/document/user_manual/6b/fd/49/38/73/a2/4a/9c/DM00072014.pdf/files/DM00072014.pdf/jcr:content/translations/en.DM00072014.pdf)
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: Cemre. - 19 Ekim 2016, 16:58:52
Hocam ben de bsf bcf'yi 16f84a ile okulda öğrendim. Öyle asm bildiğimden değil.

Hocam UML nasıl öğrenilir. Nereden öğrenilir? Mümkünse abc sini anlatan bir kaynak önerisi istiyorum.
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: RaMu - 19 Ekim 2016, 22:12:27
@gerbay hocam açtığın konu ilgi yetmezliğinden ölecekse
asm ye sataşayım, bir umut mu diyorsun.
Anlat hocam bize C ve ötesini anlat, dinliyoruz,
birini övmek için diğerini yermeye gerek yok.

Bu arada hocam o karikatürleri nereden buldun,
asansörü bilmesem hani.

Şimdi bilmediğim bir şeyi sorma ve öğrenme zamanı:
Her görenin anlayacağı dilde akış diyagramı yazmaya UML mi deniyor @CoDeR hocam?
Başlık: Ynt: C ile OOP ( Object Oriented Programming ) nasıl yapılır?
Gönderen: foseydon - 12 Şubat 2017, 23:09:06
C ile OOP yapamazsınız. C programlama dili nesne yönelimli tasarlanmamıştır, prosedüreldir, nesnelerin arasındaki ilişkiler ile değil belli bir sıraya göre işlem yapar. biraz uğraşıp, şeklen oop diline benzetirsiniz, o da encapsulation falan yaparsınız ama inheritance yapamazsınız. şeklen benzetseniz bile, önemli olan derleyicidir, o da makine koduna çevirirken yine prosedür mantığı ile çevirir.

Bunlarla uğraşıp zaman kaybetmeyin boşuna, buna vereceğiniz zamanı c++ öğrenmeye verin. öğrenmeye verin diyorum, çünkü c++ bilen adam bunun olmayacağını zaten bilir.