week1-mustafayigit34 created by GitHub Classroom
Java’da değişmez sınıf (immutable class) yapmak için aşağıdaki adımları uygulamanız gerekir. Bu adımlar:
- Sınıfı, final anahtarı ile işaretlemek gerekir, böylece genişletilemez (extend edilemez).
- Sınıfın tüm alanlarını private yapın, böylece doğrudan erişime izin verilmez.
- Değişkenler için setter yöntemleri sağlamayın.
- Tüm değiştirilebilen alanları final yapın, böylece yalnızca bir kez atanabilir.
- Tüm alanların, contructor aracılığıyla ilk değerlerini atamasını sağla.
- Değiştirebilir olan tüm alanların dışarıya nesnelerin klonlanarak dönmesini gerçekleştirin.
Bu koşulların sağlandığı "immutable" bir Car sınıfı oluşturulmuştur.
package immutable;
import java.awt.Color;
import java.util.Date;
public final class Car {
enum Model {
TOYOTA, FORD;
}
private final Model Model;
private final int year;
private final int howMany;
private final Date productionDate;
private final int km;
private final Color color;
public Car(Model model, int year, int howMany, Date productionDate, int km, Color color) {
this.Model = model;
this.year = year;
this.howMany = howMany;
this.productionDate = productionDate;
this.km = km;
this.color = color;
}
public Model getModel() {
return Model;
}
public int getYear() {
return year;
}
public int getHowMany() {
return howMany;
}
public Date getProductionDate() {
return productionDate;
}
public int getKm() {
return km;
}
public Color getColor() {
return color;
}
}
Maven build sistemi ile bir ana proje ve içerisinde iki farklı java projesi olacak şekilde Consumer ve Producer oluşturulmuştur.
- Consumer
- score.txt dosyası okunacak.
- System.out ile ekrana yazdırılacak.
- Producer
- Ekrana yazılan girdi okunacak ve score.txt dosyasına kaydedilecek.
- İnput yapısı: "Takım1 Skor1-Skor2 Takım2" şeklinde olacaktır.
Oluşturulan Maven build sistemi aşağıdaki gibidir:
Ödev 2'ye ek olarak yine Maven build sistemi ve 3. bir projede "thread" ile bu işlem yapılmıştır. Bu projeye ait yapı aşağıdaki gibidir: