Birleştirme
- Java kursu
- Orta seviye
- Ders 69/116
- 6 dk
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
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
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
blog.posts.____(0).addComment(new Comment("Ali", "Güzel"));
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 |