CodeBlanks Logo Icon CodeBlanks

Birleştirme

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

Blog birleştirme

Son derste tüm parçaları birleştirip çalışan bir blog yapacağız. Post, Comment ve Blog sınıfları hazır. main metodunda blog'a iki yazı ekler, her yazıya birer yorum bağlar ve yazı başlıklarını ekrana yazdırırız.

Bu, nesne yönelimli tasarımın gücünü gösterir: her sınıf tek bir iş yapar, sınıflar composition ile bağlanır, Blog tüm yönetimi üstlenir.

Birleştirme sırası

Son adımda tüm parçaları mantıklı bir sırayla çağırırız: önce Blog blog = new Blog(); ile boş bir blog, sonra addPost ile yazılar, sonra her yazıya addComment ile yorumlar. En sonunda blog.posts.get(i).title ile başlıkları yazdırırız.

Bu sıra, bağımlılıkları gözetir: yorum eklemek için önce yazı eklenmiş olmalı. Akış, gerçek bir uygulamanın veri akışını küçük ölçekte yansıtır.

Uygulama Tüm blog'u birleştir

Tüm parçaları bir araya getir. Post, Comment ve Blog sınıflarını (yorum listesi ve findByTitle dahil) yaz. main içinde bir Blog blog = new Blog(); oluştur, iki yazı ekle, her birine birer yorum bağla ve her yazının başlığını ayrı satırda yazdır: System.out.println(blog.posts.get(0).title); ve System.out.println(blog.posts.get(1).title);.

Başlangıç kodu

Main.java
import java.util.List;
import java.util.ArrayList;

class Post {
    String title;
    String author;
    List<Comment> comments = new ArrayList<>();
    Post(String title, String author) {
        this.title = title;
        this.author = author;
    }
    void addComment(Comment c) { comments.add(c); }
}

class Comment {
    String author;
    String text;
    Comment(String author, String text) {
        this.author = author;
        this.text = text;
    }
}

class Blog {
    List<Post> posts = new ArrayList<>();
    void addPost(Post post) { posts.add(post); }
}
    List<Post> findByTitle(String keyword) {
        List<Post> result = new ArrayList<>();
        for (Post post : posts) {
            if (post.title.contains(keyword)) {
                result.add(post);
            }
        }
        return result;
    }

// main: bir blog oluştur, iki yazı ekle, her birine yorum bağla, başlıkları yazdır

Örnek çözüm

Main.java
class Post {
    String title;
    String author;
    List<Comment> comments = new ArrayList<>();
    Post(String title, String author) {
        this.title = title;
        this.author = author;
    }
    void addComment(Comment c) { comments.add(c); }
}

class Comment {
    String author;
    String text;
    Comment(String author, String text) {
        this.author = author;
        this.text = text;
    }
}

class Blog {
    List<Post> posts = new ArrayList<>();
    void addPost(Post post) { posts.add(post); }
    List<Post> findByTitle(String keyword) {
        List<Post> result = new ArrayList<>();
        for (Post post : posts) {
            if (post.title.contains(keyword)) {
                result.add(post);
            }
        }
        return result;
    }
}

public class Main {
    public static void main(String[] args) {
        Blog blog = new Blog();
        blog.addPost(new Post("Java giriş", "Ayşe"));
        blog.addPost(new Post("Diğer", "Mehmet"));
        blog.posts.get(0).addComment(new Comment("Ali", "Güzel"));
        blog.posts.get(1).addComment(new Comment("Veli", "Teşekkür"));
        System.out.println(blog.posts.get(0).title);
        System.out.println(blog.posts.get(1).title);
    }
}

Beklenen çıktı

Java giriş
Diğer

Soru ve cevaplar

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

1 Blog projesinde composition nerede kullanıldı?

  • Blog, Post'tan miras alır
  • Comment, Blog'u implements eder
  • Post, Comment listesini içerir Doğru cevap
  • Post, abstract bir sınıftır

Açıklama: Post, List<Comment> ile yorumlarını içerir; composition'dır.

2 Yazıya erişim çağrısını tamamla

Soru
blog.posts.____(0).addComment(new Comment("Ali", "Güzel"));
Cevap
blog.posts.get(0).addComment(new Comment("Ali", "Güzel"));

Açıklama: get(0) ilk yazıyı döndürür.

3 Blog projesi özetini eşleştir

Kavram Anlamı
Post Yazı verilerini tutar
Comment Yorum verilerini tutar
Blog Yazı koleksiyonunu yönetir
composition Post, Comment listesini içerir

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