CodeBlanks Logo Icon CodeBlanks

Birleştirme

Blog sınıfını menü döngüsüyle birleştirirsin.

Tüm parçaları birleştir

Son derste tüm parçaları bir araya getirip çalışan bir komut satırı akışı kurarsın. Bir show_menu işlevi tanımlar; içine bir blog, üç yazı ve arama çağrısı koyarsın. Ekrana yazı sayısını ve arama sonucunu yazdırırsın.

Bu akış gerçek bir uygulamada menü seçenekleriyle dallanır; burada yalnızca sabit verilerle çalışıp çıktıyı doğrularsın. Önemli olan, sınıfların ve metodların birlikte nasıl çalıştığını görmektir.

Uygulama show_menu işlevini yaz

Üstteki sınıflar hazır. Şimdi def show_menu(): işlevini yaz. İçinde blog = Blog() ile bir blog oluştur, üç yazı ekle (ikisinin yazarı "Ayşe" olsun, üçüncüsü "Ali"). Sonra print("Yazı sayısı:", len(blog.posts)) ve print("Ayşe'nin yazıları:", len(blog.search_by_author("Ayşe"))) satırlarını ekle. En sonda show_menu() çağrısı yap.

Başlangıç kodu

main.py
from dataclasses import dataclass, field

@dataclass
class Post:
    title: str = ""
    content: str = ""
    author: str = ""
    comments: list = field(default_factory=list)

    def add_comment(self, comment):
        self.comments.append(comment)

@dataclass
class Comment:
    author: str = ""
    text: str = ""

@dataclass
class Blog:
    posts: list = field(default_factory=list)

    def add_post(self, post):
        self.posts.append(post)

    def search_by_author(self, author):
        return [p for p in self.posts if p.author == author]

# show_menu işlevini tanımla

# İşlevi çağır

Örnek çözüm

main.py
from dataclasses import dataclass, field

@dataclass
class Post:
    title: str = ""
    content: str = ""
    author: str = ""
    comments: list = field(default_factory=list)

    def add_comment(self, comment):
        self.comments.append(comment)

@dataclass
class Comment:
    author: str = ""
    text: str = ""

@dataclass
class Blog:
    posts: list = field(default_factory=list)

    def add_post(self, post):
        self.posts.append(post)

    def search_by_author(self, author):
        return [p for p in self.posts if p.author == author]

def show_menu():
    blog = Blog()
    blog.add_post(Post(title="Birinci", author="Ayşe"))
    blog.add_post(Post(title="İkinci", author="Ali"))
    blog.add_post(Post(title="Üçüncü", author="Ayşe"))
    print("Yazı sayısı:", len(blog.posts))
    print("Ayşe'nin yazıları:", len(blog.search_by_author("Ayşe")))

show_menu()

Beklenen çıktı

Yazı sayısı: 3
Ayşe'nin yazıları: 2

Projenin değerlendirmesi

Bu projede üç sınıf tanımladın: Post, Comment ve Blog. Her biri tek bir işi iyi yapar; Blog koleksiyonu yönetir, Post yorumları tutar, Comment ise yalnızca veri taşır.

Arama metodunda liste üretimini kullandın; bu, döngü ve koşuldan kısa bir örüntüdür. Veri sınıfları sayesinde kurucu metot yazmadan çok sayıda alan tanımladın. Bu yapı, daha büyük uygulamalarda da aynı kalır.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Projenin birleştirilmesi ne sağlar?

  • Tüm parçalar birlikte çalışır, eksiksiz uygulama elde edilir Doğru cevap
  • Daha az kod yazılır, kısayollar aktifleşir
  • Sınıflar gereksiz hale gelir, silinebilir
  • Program otomatik olarak hızlanır

Açıklama: Birleştirme, parçaların birlikte çalıştığı eksiksiz bir akış kurar.

2 Menü çağrısını tamamla

Soru
____()
Cevap
show_menu()

Açıklama: show_menu() çağrısı işlevi çalıştırır.

3 Proje sınıflarını eşleştir

Kavram Anlamı
Blog Yazı koleksiyonunu yönetir
Post Tek bir yazıyı ve yorumlarını tutar
Comment Yorum verisini taşır
search_by_author Yazara göre arama yapar

Orta seviye bölümündeki tüm dersler