Ana sayfa Genel Python – Nesne Yönelimli Programlama – Sınıflar

Python – Nesne Yönelimli Programlama – Sınıflar

2007
84
PAYLAŞ

Nesne Yönelimli Programlama – Sınıflar

Bu konuyla beraber Nesne Tabanlı Programlamaya giriş yapıyoruz ve bu konuda biraz Nesne Tabanlı programlama hakkında konuşacağız. Nesne Yönelimli Programlama veya ingilizce ismiyle Object Oriented Programming en basit anlamıyla gerçek hayatı programlamaya uyarlamak olarak düşünülebilir. Örneğin bir tane öğrenci otomasyon sistemi yazmak istiyoruz. Bunun için öğretmenleri , öğrencileri ve kursları aslında birer nesne olarak oluşturmamız gerekiyor. Böyle bir sistemi programlamayla gerçekleştirmek için aslında her bir nesnenin yapısını tanımlayıp, daha sonra bu yapılardan nesneler üretmemiz gerekiyor. İşte Nesne Yönelimli Programlama en basit anlamıyla bu şekildedir. Şimdi isterseniz obje veya nesne nedir anlamaya çalışalım.

Obje nedir ?

Etrafımıza baktığımızda aslında her bir eşyanın bir obje olduğunu görüyoruz. Örneğin bir tane televizyon kumandasını düşünelim. Bu kumandanın kendi içinde değişik özellikleri (attribute) ve fonksiyonları(metod) bulunuyor. Örneğin, kumandanın markası, tuşları aslında bu kumandanın özellikleridir(attribute). Kumandanın kırmızı tuşuna bastığımızda televizyonun kapanması ve sesi kapatma tuşuna bastığımızda televizyonun sesinin kapanması bu kumandanın metodlarıdır. Bunun gibi Pythondaki aslında her şey bir objedir. Örneğin, listelere bakacak olursak bu liste objelerinin aslında birçok metodu ve özelliği bulunur.

Sınıflar

Kendi veri tiplerimizi oluşturmak ve bu veri tiplerinden objeler üretmemiz için öncelikle objeleri üreteceğimiz yapıyı tanımlamamız gerekiyor. Bunu tasarladığımız yapıya da sınıf veya ingilizce ismiyle class diyoruz. Şimdi class yapılarını öğrenerek konumuza başlayalım.

Class Anahtar Kelimesi

Sınıflar veya Classlar objelerimizi oluştururken objelerin özelliklerini ve metodlarını tanımladığımız bir yapıdır ve biz herbir objeyi bu yapıya göre üretiriz. İsterseniz bir Araba classı tanımlayarak yapımızı kurmaya başlayalım.

Sınıfımızı Pythonda tanımladık. Peki bu sınıftan obje nasıl oluşturacağız ? Bunu da şu şekilde yapabiliyoruz.

araba1 objesi artık sınıfta tanımladığımız bütün özelliklere (attributes) sahip olmuş oldu. İşte sınıf ve obje üretmek bu şekilde olmaktadır. Peki bu araba objesinin özelliklerinin nasıl görebiliriz ?

Şimdi de başka bir Araba objesi oluşturalım.

Burda gördüğümüz gibi oluşturduğumuz objelerin buradaki model,renk vs. gibi özelliklerinin değeri aynıdır. Çünkü aslında burada tanımladığımız özellikler birer sınıf özelliğidir. Yani biz bir obje oluşturduğumuzda bu özelliklerin değerleri varsayılan olarak gelir. Bu özelliklerin değerlerine , herhangi bir obje oluşturmadan da erişebiliriz. Bunu da şu şekilde yapabiliriz.

Bizim her bir objeyi başlangıçta farklı değerlerle oluşturmamız için her bir objeyi oluştururken objelerin değerlerini göndermemiz gerekiyor. Bunun için de özel bir metodu kullanmamız gerekmektedir.

Peki bu metod ne anlama geliyor ? İsterseniz ilk olarak dir() fonksiyonu yardımıyla araba1 objemizde neler var bakalım.

Burada objemizin tüm özelliklerini ve metodlarını görüyoruz. Ancak biz herhangi bir metod tanımlamamıştır. Buradaki metodlar Python tarafından bir obje oluşturulduğunda özel olarak tanımlanan metodlardır ve biz eğer özel olarak bunları tanımlamazsak Python kendisi bunları varsayılan tanımlıyor. Burada aynı zamanda init metodunu da görüyoruz. Eğer biz bu metodu kendimiz tanımlarsak objelerimizi farklı değerlerle başlatabiliriz.

Aslında init metodu Pythonda yapıcı(constructor ) fonksiyon olarak tanımlanmaktadır. Bu metod objelerimiz oluşturulurken otomatik olarak ilk çağrılan fonksiyondur. Bu metodu özel olarak tanımlayarak objelerimizi farklı değerlerle oluşturabiliriz.

Peki bu metodu nasıl tanımlayacağız ? Direk örnek üzerinden görmeye çalışalım.

Peki burada self ne anlama geliyor ? self anahtar kelimesi objeyi oluşturduğumuz zaman o objeyi gösteren bir referanstır ve metodlarımızda en başta bulunması gereken bir parametredir. Yani biz bir objenin bütün özelliklerini ve metodlarını bu referans üzerinden kullanabiliriz.

Objeler oluşturulurken, Python bu referansı metodlara otomatik olarak kendisi gönderir. Özel olarak self referansını göndermemize gerek yoktur.

init metodunu ve self’i iyi anlamak için objelerimize özellikler ekleyelim.

İstersek init metodunu varsayılan değerlerle de yazabiliriz.

İşte burada gördüğümüz gibi bir objeyi init metodunu kendimiz yazarak farklı değerlerle oluşturabiliyoruz. Bir sonraki derste objelere kendi metodlarımızı nasıl yazacağımızı öğrenmeye çalışacağız.

84 YORUMLAR

  1. I believe that is one of the such a lot important information for me. And i’m happy studying your article. However should remark on few general issues, The web site style is ideal, the articles is really excellent : D. Just right activity, cheers

  2. Thanks a bunch for sharing this with all of us you actually know what you are talking about! Bookmarked. Kindly also visit my website =). We could have a link exchange agreement between us!

  3. Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point. You clearly know what youre talking about, why throw away your intelligence on just posting videos to your site when you could be giving us something enlightening to read?

  4. Thank you, I’ve just been looking for info about this subject for a while and yours is the greatest I’ve discovered till now. But, what about the conclusion? Are you sure about the source?

  5. Thank you for the auspicious writeup. It actually was a amusement account it. Glance advanced to more brought agreeable from you! By the way, how could we keep in touch?

  6. Hi , I do believe this is an excellent blog. I stumbled upon it on Yahoo , i will come back once again. Money and freedom is the best way to change, may you be rich and help other people.

  7. Hi there! This post could not be written any better! Reading through this post reminds me of my good old room mate! He always kept chatting about this. I will forward this write-up to him. Fairly certain he will have a good read. Many thanks for sharing!

  8. I?¦m no longer sure the place you are getting your info, however great topic. I needs to spend a while learning much more or figuring out more. Thank you for magnificent info I used to be looking for this info for my mission.

  9. Nice post. I learn something totally new and challenging on blogs
    I stumbleupon everyday. It will always be helpful to read through
    articles from other writers and practice something from their websites.

  10. Wonderful blog! I found it while browsing on Yahoo News.
    Do you have any suggestions on how to get listed in Yahoo News?
    I’ve been trying for a while but I never seem to get there!
    Cheers

  11. Great blog right here! Also your web site a lot up fast! What host are you using? Can I get your associate hyperlink to your host? I wish my site loaded up as fast as yours lol

  12. Hey there just wanted to give you a quick heads up. The words in your content seem to be running off the screen in Firefox. I’m not sure if this is a format issue or something to do with web browser compatibility but I thought I’d post to let you know. The design and style look great though! Hope you get the problem solved soon. Kudos

  13. Its like you learn my mind! You seem to know a lot
    approximately this, like you wrote the guide
    in it or something. I think that you can do with some percent to force the message house a bit, however other than that, that is magnificent blog.
    A great read. I’ll certainly be back.

  14. I don’t even know how I stopped up here, however I believed this submit was great. I don’t realize who you might be but definitely you’re going to a well-known blogger in the event you are not already 😉 Cheers!

  15. Nice blog right here! Also your web site so much up
    very fast! What host are you the usage of? Can I am getting your associate hyperlink on your host?

    I desire my site loaded up as quickly as yours lol

  16. Howdy this is kinda of off topic but I was wondering if
    blogs use WYSIWYG editors or if you have to manually code with HTML.

    I’m starting a blog soon but have no coding skills so I wanted to
    get advice from someone with experience. Any help
    would be greatly appreciated!

  17. Thanks for some other informative site. Where else may I get that type of information written in such an ideal way? I have a mission that I’m just now running on, and I have been at the look out for such info.

  18. I’ve been browsing online more than three hours nowadays, but I never discovered any fascinating article like yours. It?¦s pretty price sufficient for me. Personally, if all webmasters and bloggers made just right content as you probably did, the internet will likely be a lot more helpful than ever before.

  19. Hi, I think your blog might be having browser compatibility issues. When I look at your website in Firefox, it looks fine but when opening in Internet Explorer, it has some overlapping. I just wanted to give you a quick heads up! Other then that, terrific blog!

  20. This is the suitable blog for anybody who needs to search out out about this topic. You realize so much its virtually arduous to argue with you (not that I truly would need…HaHa). You positively put a new spin on a subject thats been written about for years. Nice stuff, simply nice!

  21. Hiya, I’m really glad I’ve found this info. Nowadays bloggers publish only about gossips and net and this is actually irritating. A good website with exciting content, this is what I need. Thank you for keeping this web site, I will be visiting it. Do you do newsletters? Cant find it.

  22. Thanks for sharing excellent informations. Your site is very cool. I’m impressed by the details that you have on this site. It reveals how nicely you understand this subject. Bookmarked this web page, will come back for more articles. You, my friend, ROCK! I found just the information I already searched everywhere and simply could not come across. What a great web-site.

  23. Hi there would you mind letting me know which hosting company you’re working with? I’ve loaded your blog in 3 different web browsers and I must say this blog loads a lot quicker then most. Can you recommend a good internet hosting provider at a honest price? Kudos, I appreciate it!

  24. SMAZ換能器傳送更穩定,更安全,更有效,和疼痛更少的HIFU能量。 SMAZ不需要應用較高的能量便可到達浅肌肉腱膜層。主要治療:-抬頭紋 -眉間紋 -鼻樑紋 -魚尾紋 -法令紋 -淚溝 -木偶紋 -垂直唇紋 -嘴角紋 -頸紋

  25. Great post. I was checking constantly this blog and I am impressed! Very useful information specifically the last part 🙂 I care for such info much. I was looking for this particular information for a long time. Thank you and good luck.

  26. The very core of your writing while sounding reasonable originally, did not work very well with me personally after some time. Someplace throughout the sentences you actually were able to make me a believer but only for a very short while. I still have got a problem with your leaps in assumptions and one might do nicely to help fill in those gaps. In the event that you can accomplish that, I could certainly be impressed.

  27. Hi! I know this is kinda off topic but I was wondering which blog platform are you using for this site? I’m getting sick and tired of WordPress because I’ve had problems with hackers and I’m looking at options for another platform. I would be awesome if you could point me in the direction of a good platform.

  28. Nice post. I learn something more challenging on different blogs everyday. It will always be stimulating to read content from other writers and practice a little something from their store. I’d prefer to use some with the content on my blog whether you don’t mind. Natually I’ll give you a link on your web blog. Thanks for sharing.

  29. Newport manager Michael Flynn has signed an improved new contract with the Sky Bet League Two club. Flynn, whose side take on Tottenham on Wednesday, has extended his deal until 2020. Newport manager Michael Flynn signs improved contract ahead of FA Cup replay against Tottenham at Wembley

  30. Its like you read my mind! You seem to know so much about this, like you wrote the book in it or something.
    I think that you could do with some pics to drive
    the message home a little bit, but instead of that, this
    is excellent blog. An excellent read. I’ll definitely
    be back.

  31. Some really superb posts on this web site, thank you for contribution. “When he has ceased to hear the many, he may discern the One – the inner sound which kills the outer.” by H Hahn Blavatsky.

  32. What’s Happening i’m new to this, I stumbled upon this I have found It absolutely helpful and it has helped me out loads. I hope to contribute & aid other users like its aided me. Good job.

  33. When I originally commented I clicked the -Notify me when new comments are added- checkbox and now each time a comment is added I get four emails with the same comment. Is there any way you can remove me from that service? Thanks!

  34. An interesting discussion is worth comment. I think that you should write more on this topic, it might not be a taboo subject but generally people are not enough to speak on such topics. To the next. Cheers

BİR CEVAP BIRAK

Lütfen yorumunuzu giriniz
Buraya isminizi giriniz