Factory pattern-banka hesap sistemi

By-CyL1nD3r

Uzman üye
1 Eyl 2008
1,485
14
BuRs4
Açıklama:

Ödevin amacı bir banka sistemi içinde birden çok müşterinin, birden çok hesabı olmasını sağlamak. Bu hesaplar birikimli yada vadeli olarak 2 tür olabilir. Fakat factory patterni sayesinde daha fazla hesap türü eklenebilir, buda sistemin geliştirilebilir ve esnek bir yapıda olmasının bir sonucudur. IntHesapTuru’nden implement edilen yeni sınıflar ve ConHesap sınıfına eklenecek yeni hesap türleri ile sistem gelişebilir.
Banka sınıfında banka adı ve müşteri sayısı dataları private olarak tanımlanmıştır, müşteriler bir arrayde tutulur. Müşteri sınıfından türetilen nesneler bu arrayde saklanır. Bu sınıfta müşteri ekleme ve listeleme metodları bulunur.
Müşteri sınıfında hesaplar sınıfından yaratılan ve hesapları tutan hesaplar adlı bir array vardır. Bu arraye hesap ekleme ve listeleme metodalrı bulunur. Bu sınıfta ayrıca müşterinin adı ve hesap numarısı tutulur. Banka sınıfı ile müşteri sınıfı arasında 1 e N ilişkisi bulunur.
Hesap sınıfında oluşturulan hesabın verilerinin gönderildiği bir contructor vardır, HesapTuruBelirle() metoduna gönderilen bir string ile hesap turu belirlenir. Müşteri sınıfı ile müşteri sınıf arasında 1 e N ilişkisi vardır.
IntHesap interface IntHesapTuru tipinde bir değer dondurur. HesapTuruAta abstract metdonuna yollanacak bir string ile bu sağlanır.
ConHesap sınıfında IntHesap interfacenin HesapTuruAta metodunun gerçekleştirimi yapılır.
IntHesapTuru interfacinde BakiyeHesapla abstarct metodu tanımlanır.
VadeliHesap ve BirikimHesap sınıfları IntHesapTurunu implement ederler,abstract BakiyeHesapla metodunu gerçekleştirimini sağlarlar.
Test sınıflarında oluşturulan sınıflardan nesne oluşturulabiliyor mu? Oluşturulan nesneler veri tutabiliyor mu (set)? Bu değerler geri döndürülebiliyor mu (get)? sorularına yanıt alınır.

Hazırlama Ortamı:
Eclipse



public class banka {


private String bankaAdi;
private Musteri[] musteriler = new Musteri[100];
private int musteriSayisi = 0;

public banka(String ad){
bankaAdi=ad;
}

public **** MusteriEkle(Musteri m){
musteriler[musteriSayisi++]=m;}

public **** Listele(){
for (int i=0;i<musteriSayisi;i++)
System.out.println(musteriler.MusteriBilgisiListele());}

public String getAd(){
return bankaAdi;}
public Musteri getMusteri(){
return musteriler[musteriSayisi-1];}


}

public class Musteri {
private String adSoyad;
private long musteriNo;
private Hesap[] hesaplar=new Hesap[100];
private int hesapSayisi=0;


public Musteri(String isim,long no){
adSoyad=isim;
musteriNo=no;}

public **** HesapEkle(Hesap h){
hesaplar[hesapSayisi++]=h;
}
public String MusteriBilgisiListele(){
String metin=new String();
metin+=adSoyad+" "+musteriNo+" ";
for(int i=0;i<hesapSayisi;i++)
metin+="\n"+hesaplar.HesapBilgisiListele();

return metin;

}
public Hesap getHesap()
{
return hesaplar[hesapSayisi-1];
}
}

public class Hesap {
private long hesapNo;
private long bakiye;
private String baslangicTarihi;
private IntHesapTuru tur;
private IntHesap fac;

public Hesap(long hesapNo,String baslangicTarihi,long bakiye){
this.hesapNo=hesapNo;
this.baslangicTarihi=baslangicTarihi;
this.bakiye=bakiye;
}
public String getBaslangicTarihi() {
return baslangicTarihi;
}
public long getHesapNo() {
return hesapNo;
}
public long getBakiye() {
return bakiye;
}
public **** HesapTuruBelirle(String turadi)
{
fac=(IntHesap) new ConHesap(this);
tur=(IntHesapTuru)fac.HesapTuruAta(turadi);

}
public String HesapBilgisiListele(){
double bakiyeMiktari=tur.BakiyeHesapla(this);
String metin=new String();
metin+=getBaslangicTarihi()+" "+getHesapNo()+" "+bakiyeMiktari;
return metin;
}
}
public interface IntHesap {

IntHesapTuru HesapTuruAta(String tur);
}
public class ConHesap implements IntHesap{
private Hesap h;
private String tur;

public ConHesap (Hesap h)
{
this.h=h;

}

public IntHesapTuru HesapTuruAta(String tur)
{ this.tur=tur;
if ("birikim".equals(tur))
return (IntHesapTuru)new BirikimHesap(h);
else
return (IntHesapTuru)new VadeliHesap(h);

}
public Hesap getHesap()
{
return h;
}
}
public interface IntHesapTuru {
double BakiyeHesapla(Hesap h);

}

public class BirikimHesap implements IntHesapTuru{
private Hesap h;
private double gunlukFaiz=0.1;
public BirikimHesap(Hesap h)
{
this.h=h;

}
public Hesap getHesap()
{
return h;
}

public double BakiyeHesapla(Hesap h)
{
return (double)(h.getBakiye()*gunlukFaiz*60);
}
public double getgunlukfaiz()
{
return gunlukFaiz;
}
}
public class VadeliHesap implements IntHesapTuru {
private Hesap h;
private double yillikFaiz=0.15;
public VadeliHesap(Hesap h)
{
this.h=h;

}
public double BakiyeHesapla(Hesap h)
{

return (double)(h.getBakiye()*yillikFaiz*450);
}
public double getyillikfaiz()
{
return yillikFaiz;
}
public Hesap getHesap()
{
return h;
}
}


*****Test Sınıfları*****
import junit.framework.TestCase;
public class TestBanka extends TestCase {

banka btest;

protected **** setUp()
{
btest= new banka("garanti");
}
public **** testBanka() {
assertEquals("garanti",btest.getAd());
}

public **** testMusteriEkle() {
Musteri m=new Musteri("isim",000);
btest.MusteriEkle(m);
assertEquals(m,btest.getMusteri());
}
}

import junit.framework.TestCase;
public class TestMusteri extends TestCase {
Musteri m;
Hesap h;
protected **** setUp() {
m = new Musteri("çağlar anar",123);
h = new Hesap(112,"12,2009",9000);
m.HesapEkle(h);
}

public **** testMusteri() {
assertNotNull(m);
}

public **** testHesapEkle() {
assertEquals(m.getHesap(),h);

}

}

import junit.framework.TestCase;
public class TestHesap extends TestCase {

Hesap h;
protected **** setUp() {
h = new Hesap(112,"12,2002",2500);
h.HesapTuruBelirle("birikim");
}

public **** testHesap() {
assertNotNull(h);
}

public **** testGetBaslangicTarihi() {
assertEquals(h.getBaslangicTarihi(),"12,2002");
}

public **** testGetHesapNo() {
assertEquals(h.getHesapNo(),112);
}

public **** testGetBakiye() {
assertEquals(h.getBakiye(),2500);
}
}
import junit.framework.TestCase;
public class TestConHesap extends TestCase {

Hesap h;
ConHesap ch;
protected **** setUp() {

h = new Hesap(123,"11,2002",345);
h.HesapTuruBelirle("birikim");
ch = new ConHesap(h);

}


public **** testHesapTuruAta() {
assertEquals(h,ch.getHesap());
}
}
import junit.framework.TestCase;
public class TestBirikimHesap extends TestCase {

BirikimHesap bht;
Hesap h;
protected **** setUp()
{
h = new Hesap(1234,"12,2004",2500);
bht=new BirikimHesap(h);

}
public **** testConstructor()
{
assertEquals(bht.getHesap(),h);
}
public **** testBakiyeHesapla()
{
assertEquals((int)(2500*bht.getgunlukfaiz()*60),(i nt)bht.BakiyeHesapla(h) );
}
}
import junit.framework.TestCase;
public class TestVadeliHesap extends TestCase {

VadeliHesap vht;
Hesap h;
protected **** setUp()
{
h = new Hesap(1234,"12,2004",2500);
vht=new VadeliHesap(h);

}
public **** testConstructor()
{
assertEquals(vht.getHesap(),h);
}
public **** testBakiyeHesapla()
{
assertEquals((int)(2500*vht.getyillikfaiz()*450),( int)vht.BakiyeHesapla(h) );
}
}
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.