oop java project

Upload: mustyyg

Post on 07-Apr-2018

273 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/6/2019 OOP Java Project

    1/30

    G A Z N V E R S T E S

    B L M E N S T T S

    BLM SSTEMLER YKSEK LSANS (UZAK) PROGRAMI

    NESNE YNELML PROGRAMLAMA (NYP)

    DNEM PROJES RAPORU

    RETM YES : Yrd.Do.Dr.Hacer KARACAN

    RENC : Murat AZML

    UBE NO : A2 108007755

  • 8/6/2019 OOP Java Project

    2/30

    2

    NDEKLER

    1. GR 32. AMA 33. KAPSAM 34. KAVRAMSAL TASARIM

    4.1 SSTEMDEK AKTRLER 4

    4.2 SSTEMDEK BELGELER 5

    4.3 USECASE DIAGRAM 6

    5. MANTIKSAL TASARIM5.1 ACTIVITY DIAGRAMS 7

    5.2 CLASS DIAGRAM 9

    5.3 DATA MODEL DIAGRAM 10

    6. GELTRME6.1 PROGRAMLAMA DL SEM 11

    6.2 PROGRAMLAMA ARACI SEM (IDE) 11

    7. TEST 128. DAITIM

    8.1 GEREKSNMLER 13

    8.2 KURULUM 13

    8.3 ALITIRMA 15

    9. PROGRAMIN KULLANILMASI 1610. KAYNAKLAR

    10.1 ELEKTRONK KAYNAKLAR 20

    10.2 BASILI KAYNAKLAR 20

    11. PROGRAM KAYNAK KODU VE ACIKLAMALAR 21

  • 8/6/2019 OOP Java Project

    3/30

    3

    1.GR

    alanlar arasnda fonksiyonel ayrm yaplarak kurumsallam veya kurumsallama aamasnda olan

    orta lekli sistemler (iletmeler) iin tasarlanm olan ERP Yazlm Satnalma Modl ileyii tasarm

    aamasnda detayl olarak aklanmaya allmtr. Yazlm tasarmnda Nesne Ynelimli Programlama

    yntemi kullanlmtr. ncelikle, sistemdeki roller, aktrler ve bunlarn fonksiyonlar tespit edilmitir.

    Daha sonra bu fonksiyonlar arasndaki iliki belirlenmi ve ak diyagramlar oluturulmutur. Son

    olarak, statik veri yaplar ve veriler aras ilikiler (dnmler) oluturularak Mantksal Tasarm sreci

    tamamlanmtr.

    2.AMA

    Gnmzde orta ve byk lekli iletmeler, iletme ii srelerin kurulmas, ynetilmesi, verilerin

    kayt altna alnarak raporlanmasnn nemini kavram durumdadr. Bunun iin bir ok iletme bir ERP

    (Entireprise Resource Planning- Kurumsal Kaynak Planlama) sistemi kurmutur. Bu sayede iletmeler,

    srelerini ynetebilir, bilgiye ve objektif saysal verilere dayanan kararlar alabilirler. Bu kriterleredayanarak alnan kararlarn doru olma olasl ok yksektir. Bu doru kararlar ile yaplan faaliyetler

    sonucunda da baar ve byme kanlmaz olarak gelecektir.

    3.KAPSAM

    Bu dkmanda, iletmedeki srelerden SATINALMA sreci detayl olarak ve ilikide olduu dier

    sreler ise kaba olarak ele alnmtr. Satnalma srecinin neminin anlalmas iin, ilikide olduu

    dier srelerin de bilinmesi gerekmektedir.

    letmeler, mal veya hizmet retebilmek iin ncelikle satnalma yapmak zorundadrlar. Bir motor

    paras reten iletmeyi dndmzde; Motor parasn retmek iin gerekli olan hammadde veyardmc maddeler satn alnmal, sonra bu hammaddeler eitli ilemlere tabi tutularak motor paras

    retilmelidir. Ayn ekilde bir pizza iletmesini dndmzde; Pizza retmek iin nce eitli

    sebzeler, et rnleri ve un satn alnmal, undan hamur yaplmal ve dier malzemelerde hamurun

    zerine yerletirilip frnda piirilmelidir. Hatta retilmi olan pizzann datmn yapabilmek iin, daha

    nceden bir motorlu ara ve piirebilmek iin bir frn satn alnm olmaldr.

    rneklerden de anlalaca zere satnalma faaliyeti her trl iletme iinde nemli bir yere sahiptir.

    Sat faaliyeti nasl iletmeye para girmesini salyor ise satnalma faaliyeti de iletmeden para kn

    salamaktadr. Bundan dolay iletme sahipleri, genelde satnalma yapmak istemezler. retimin devam

    etmesi iin zorunlu olan hammadde, yardmc madde ve enerji dnda satnalmay istemezler. Ayrca,

    iletme alanlarnn da aslnda iletmeye hizmet sattn dnebiliriz. nk, iletme alanlar

    nceden belirlenmi bir cret karlnda bilgi ve becerilerini o iletme iin kullanmaktadr. nsanretimin bir unsuru olduuna gre, alanlar da retimin asli bir unsurudur. Ancak bu temel nokta,

    ou iletme sahibi tarafndan gz ard edilmekte, alanlara gereksiz bir masraf gzyle

    baklmaktadr.

    alanlardan hizmet alm normal satnalma sreleri dnda ilemektedir. letmelerde bu srece

    genelde Insan Kaynaklar (Personel) departmanlar bakmaktadr. ERP sistemlerinde ayr bir modldr.

    Bu modlde sadece, dier iletmelerden yaplan mal ve hizmet satnalma sreleri yer almaktadr.

  • 8/6/2019 OOP Java Project

    4/30

    4

    4.KAVRAMSAL TASARIM

    Bir iletmede kurulmak istenen satnalma sisteminde minumum dzeyde bulunmas gereken aktrler,

    kullanm durumlar ve fonksiyonlar aada akland gibi olmaldr. Bu gelerden bazlar direkt

    olarak satnalma sisteminin bir gesi olmayp, yan sistemlerin gesidir. Dier sreleri iine alan bir

    ERP sistemi mevcut ise bu geler dier sistemler ierisinde yer alabilir. Ancak, sadece tek bana bir

    satnalma sistemi kurulmak istenirse, bu geler de sistem ierisinde yer almaldr.

    4.1 SSTEMDEK AKTRLER

    a. Sistem Yneticisi:

    Sistemde yer alan dier kullanclar oluturur. Sistemde oluan bilgileri belirli aralklarla yedekler.

    Sistemin gvenliinden ve kesintisiz olarak almasndan sorumludur.

    b. Kullanc:

    Sistemde yer alan tm kullanclardr. Satnalma departmanlarnda olabilecei gibi, dier

    departmanlardan da sistemi kullanacak olan kiilerdir. (retim, planlama, lojistik, sat, muhasebe,

    finans vs) Sistemde atanm olan yetkiler dahilinde ilem yaparlar.

    c. Ynetici:Ynetici sistemde yer alan bir kullancdr. Ancak, kendi departmanndaki dier bir kullancnn istemi

    olduu satnalma taleplerini onaylama veya ret etme yetkisine sahiptir. Bu durum, iletmede her

    alann kafasna gre gereksiz satnalma yapmasn nlemektedir. Sistemde kilit bir neme sahiptir.

    letmenin verimlilii ve karll asndan ok nemlidir.

    d. Satnalma Departman:

    Kullanclar tarafndan alm ve ilgili yneticiler tarafndan onaylanm satnalma taleplerini inceler.

    Bu talepleri deerlendirir ve en uygun bulunan tedarikilere satnalma sipariini iletir. lgili tedariki

    sistemde tanml deilse tanmlar. Belirli dnem aralklarnda, tedarikilerin performanslarn hesaplar.

    e. Depo:

    Tedarikilerden gelen mallar teslim alr. Nitelik ve nicelik olarak doruluklarn kontrol eder. lgilisatnalma siparii ile eletirme yaptktan sonra sisteme irsaliye giriini yapar.

    f. Muhasebe:

    letmeye gnderilen faturalarn ERP sistemine girilerini yapar. Bu giri srasnda, fatura ieriindeki

    mal ve hizmetlerin firmaya gelip gelmediini kontrol eder. Mal faturas ise, sistemdeki irsaliye ile

    faturay eletirir.

    g. Finans:

    Muhasebe tarafndan girii yaplan faturalar kontrol eder. Faturalarn deme gnlerini tespit eder ve

    gn geldiinde demeyi gerekletirir.

  • 8/6/2019 OOP Java Project

    5/30

    5

    4.2 SSTEMDEK BELGELER

    a. Satnalma Talebi:

    letmedeki her trl kullanc tarafndan alabilir. Kullanclar, i grebilmek ve/veya iletmede

    kullanabilmek iin gerekli olan her trl rn ve hizmet satnalmas iin bir satnalma talebi amak

    zorundadr. Talep Id, Belge Tarihi, Talep Tarihi, Kullanc Id gibi bilgilerden oluan bir balk tablosu ile,

    satnalnmas istenen mal veya hizmetlerin id leri ve miktarlarnn bulunduu bir detay tablosundan

    olumaktadr. Kullanclar farkl tarihlerde istedikleri her trl satnalma talebi iin ayr bir talep belgesiamaldrlar. Eer kark alrsa, sistemde talep takibi zorlar, ilgili tedarikilerin ve satnalma

    departmann performans llemez. Tedarikiden gelen bir maln, hangi talebe istinaden geldii

    bulunamaz. Bu durumda, belgeler arasndaki ak kopacaktr.

    b. Satnalma Siparii:

    Sadece satnalma departman tarafndan alabilir. Talep belgesindeki gibi balk tablosu ve rn

    bilgileri olan bir detay tablodan oluur. 2 ekilde oluturulabilir. Kullanclarn oluturmu olduu

    satnalma talep belgelerinden direkt olarak oluturabilir. Yada, herhangi bir talep olmadan, direkt

    olarak manuel ekilde oluturulabilir. Bu durumda, satnalma sipari belgesi her hangi bir talep

    belgesini iaret etmez. Sipari belgesindeki TalepId deeri 0 (sfr) olacaktr.

    c. rsaliye:Tedarikiler tarafndan iletmeye gnderilen rnler ile gelen bir belgedir. Ticari mal sevkiyatlarnda

    bulunmas zorunludur. Tanan mallarn isimleri ve miktarlar yazlmaktadr. letmeye gelen mallar

    depo sorumlusu tarafndan kontrol edilir. rsaliye zerinde yazan bilgilerin doruluu teyid edildikten

    sonra sisteme girii yaplr. letmeye gelen mallar, sisteme irsaliyenin girilmesiyle sistemsel olarak da

    stoklar. Gelen irsaliyenin sipari belgesi bulunarak eletirilir. Bylece, ilgili satnalma siparii de

    kapatlm olur. (miktar tam ise) Bundan dolay, irsaliyelerin zerine ilgili satnalma sipari numarasnn

    yazlmas operatrlere hz kazandrmakta, bo yere ve hatal veri giriini engellemektedir. Satnalma

    siparii olmadan iletmeye gelen mallarn kabul depocu tarafndan yaplmaz. Mutlaka bir st

    yneticinin onay alnarak mal kabl yaplmaldr. Bu durumda da, mutlaka satnalma siparii

    almaldr. Balk ve detay tablosu olmak zere 2 tablodan oluur.

    d. Fatura:letmelerde ticari ilemler fatura ile yaplmaktadr. Bir iletme dier iletmeden mal ve hizmet

    karl para talep ediyorsa, nceden mutlaka fatura kesilmi olmas gerekmektedir. Her trl ticari

    bor ve alacak faturaya dayanmak zorundadr. Fatura zerinde, kesilen firma nvan, adresi, vergi

    dairesi, vergi numaras, ilgili mal ve hizmetlerin aklamalar, brt tutarlar, iskonto tutarlar, vergi

    tutarlar ve deme tarihi (vade) gibi bilgileri bulunmaktadr. Fatura ieriindeki rnlerin, firmaya

    gerekten gelip gelmedii sorgulanmaldr. (irsaliye kontrol) Ayn mallarn birden fazla kez

    faturalanmamas iin, fatura zerlerinde irsaliye numaras mutlaka yazmaldr. Son yllarda irsaliyeli

    fatura uygulamalar yaygnlamtr. Bu gibi kontrollere gerek kalmamtr.

    e.Odeme:

    Muhasebe departman tarafndan sisteme sorunsuz olarak girilmi ve deme onay verilmi olan

    faturalarn tutarlar finans departman tarafndan tedarikiye (alacakl firmaya) eitli yntemler iledenir. (nakit, ek, havale, eft vs)

  • 8/6/2019 OOP Java Project

    6/30

    6

    4.3 USECASE DIAGRAMI

  • 8/6/2019 OOP Java Project

    7/30

    7

    5.MANTIKSAL TASARIM

    5.1 ACTIVITY DIAGRAMS

  • 8/6/2019 OOP Java Project

    8/30

    8

  • 8/6/2019 OOP Java Project

    9/30

    9

    5.2 CLASS DIAGRAM

  • 8/6/2019 OOP Java Project

    10/30

    10

    5.3 DATA MODEL DIAGRAM

  • 8/6/2019 OOP Java Project

    11/30

    11

    6. GELTRME

    6.1 PROGRAMLAMA DL SEM

    Tasarlanan sistemin gelitirilmesi iin nesne ynelimli programlama dilleri aratrlmtr. Bu

    aratrmalar sonucunda Java programlama dilinde gelitirme yaplmasna karar verilmitir. Bu kararda,

    gemite yaanm olan programlama deneyimleri ve ders kapsamnda renilen yeni bilgiler etkili

    olmutur. Bu etken faktrlerden bazlar unlardr:

    a. Ders kapsamnda anlatlan Nesne Ynelimli Programlama kavram ve tekniklerinin Java ilerneklenmesi.

    b. Java nesne ynelimli bir programlama dili olduundan, her eyin bir nesneden ibaret olmas. Dahatasarm aamasnda nesne tabanl dnmeye zorlamas.

    c. Java ile gelitirilmi yazlmlarn farkl platformlarda (windows, unix, linux vs) ve farkl cihazlarda(pocked pc, pda, vs) alabilmesi.

    d. Son yllarda gelien biliim teknolojileri ve yaygnlaan internet (network) ortamlar sayesinde,yazlmlarn ok katmanl ve sunucu tarafl tasarlanmas. Java nn istemci tarafnda olduu kadar

    sunucu tarafnda da ok gl ynlerinin bulunmas.

    e. Sunucu tarafnda alan yazlmlarda en nemli hususlardan biri de kaynak ynetimi vekararllktr.(kesintisiz alma) stemcilerden ayn anda gelen istekler ok iyi ynetilmeli ve ortaya

    kabilecek hatalar kontrol altna alnmaldr. Java nn bu ihtiyaca ok iyi cevap vermesi.

    f. Javann bir programlama dili olmas yannda, bir gelitirme ve teknoloji platformu haline gelerekbir endstri standardna dnmesi.

    g. Gemite yaanan programlama deneyimlerimde Java platformunun bulunmamas. Javateknojilerinde deneyim kazanlmak istenmesi.

    6.2 PROGRAMLAMA ARACI SEM (IDE)

    Tm programlama dillerinde, yazm kurallar (syntax) sk bir disipline baldr. Yazlm gelitiriler bu

    kurallara uymak zorundadrlar. Ayrca programlama dillerinde binlerce komut bulunmaktadr. Btn

    bu komutlarn yazllarn ve kullanmlarn ezberlemek mmkn deildir. Bu zorluklardan dolay genelolarak tmleik gelitirme ortam ad verilen yazlmlar yaplmtr. (IDE-Integrated Development

    Environment) Son yllarda bir ok programlama dili iin gl IDE yazlmlar ortaya kmtr. IDE

    aralarnda bulunan genel zellikler ve yazlm gelitiricilere salad faydalardan bazlar unlardr:

    a. Kullanc arayzlerinin ve baz soyut nesne tasarmlarnn (veritaban balantlar vs) grsel olarakkolaylkla yaplabilmesi. (srkle-brak)

    b. Grsel olarak yaplan tasarm kodlarnn otomatik olarak oluturulmas.c. Sk kullanlan ve kurallar belli olan kodlarn otomatik oluturulmas. (re-factor)d. Szdizim ve baz basit mantk hatalarnn IDE tarafndan yakalanabilmesi.e. Programa durma noktalar eklenerek olaylarn ve deikenlerin izlenebilmesi. (watch-debug)f. Birden fazla programn yer ald byk yazlm projelerinde, programlarn bir arada tutulabilmesi,

    srm denetimlerinin yaplabilmesi.g. Programlarn kolaylkla derlenmesi ve datm dosyalarnn hazrlanmas. (run time files)Java programlama dili iin ok sayda tmleik gelitirme ortam bulunmaktadr. (NetBeans, Eclipse,

    JBuilder, JDeveloper vs) Her IDE nin dierlerine gre zayf veya gl olduu ynler bulunmaktadr. Bu

    durumun Java iin avantajlar ve dezavantajlar bulunmaktadr. Java ile yazlm gelitiren bir ok firma

    farkl IDE ler kulland iin, bu IDE ortamlarnn da ok iyi renilmesi gerekmektedir. Yaplan

    incelemeler sonucunda, bu projede NetBeans 6.9 IDE sinin kullanlmasna karar verilmitir.

  • 8/6/2019 OOP Java Project

    12/30

    12

    7. TEST

    Gelitirilen program eitli Windows iletim sistemlerinde ve OpenSuse Linux iletim sisteminde

    altrlm, tm grevlerini yerine getirdii ve hata yakalama fonksiyonlarnn sorunsuz alt

    grlmtr. Bu iletim sistemi srmleri aadaki gibidir:

    Windows:

    - Windows XP- Windows Vista- Windows 7- Windows Server 2003- Windows Server 2008Linux:

    - OpenSuse Linux 11

  • 8/6/2019 OOP Java Project

    13/30

    13

    8. DAITIM

    8.1 GEREKSNMLER

    Program Java dilinde gelitirilmitir. Java ile gelitirilen programlar, derlendikten sonra hemen makina

    diline evrilmezler. Bundan dolay Java platform bamsz olmaktadr. nk, derleme annda

    programn hangi iletim sisteminde altrlaca bilinmemektedir ve byle bir n koul yoktur.

    Derleme (compile) ileminde, program kodu byte code ad verilen ara bir koda evrilmektedir. Byte

    code a dnm olan program, alma annda makina diline evrilir. Bu evrimi yapacak olan baka

    bir programa daha ihtiyac duyulmaktadr. Bu programlara JRE (Java Runtime Environment) ad

    verilmektedir. Bundan dolay programn alt tm iletim sistemlerinde JRE 1.6 kurulmu olmaldr.

    Ayrca, program bir veritaban uygulamas olduundan alt iletim sisteminde Microsoft Access

    Database Driver kurulmu olmaldr. (ODBC kayna tanmlayabilmek iin)

    Java Runtime srm;

    http://www.oracle.com/technetwork/java/javase/downloads/index.html

    Microsoft Database Driver;

    http://www.microsoft.com/downloads/en/resultsForCategory.aspx?displaylang=en&categoryId=3&st

    ype=n_dc

    Linklerinden download edilebilir.

    JRE 1.6 nn kurulumu ve iletim sistemlerine gre gerekli minumum bilgisayar konfigurasyonlar kendi

    teknik dkmanlarnda bulunmaktadr.

    8.2 KURULUM

    8.2.1 Program dosyalar:

    Program, MyApp4.jar, MyApp4Src.rar ve MYDB.MDB olmak zere 3 dosyadan olumaktadr:

    MyApp4.jar dosyas programn ana runtime dosyasdr. Programda bulunan derlenmi snflar bu

    dosya ierisinde bulunmaktadr. (*.class)

    MyApp4Src.rar dosyasnda, programn kaynak kodlar bulunmaktadr. Oluturulan tm snflar iin

    kaynak kod dosyas bulunmaktadr. (*.java) Programn almas iin gerekli deildir. Kaynak kodlarn

    online olarak incelenebilmesi amacyla eklenmitir.

    MYDB.MDB dosyas, programn kulland MS ACCESS formatnda veritaban dosyasdr.

    8.2.2 Programn Kurulmas ve Ayarlarn yaplmas:

    1. Programn kurulmas iin herhangi bir setup program yoktur. Programdaki 3 dosya ayn klasre

    kopyalanmaldr.

    2. MYDB.MDB veritaban dosyasnn ODBC ayarlar yaplarak iletim sistemi zerinde bir veri kayna

    oluturulmaldr. Oluturulan veri kaynann ad MYDB olmaldr. (tamam byk harf) Program

    almas srasnda, ODBC zerinde MYDB isimli veri kaynana balanmaya alacaktr. ODBC

    ayarlarnn yaplmas aadaki ekran grntlerinde bulunmaktadr.

  • 8/6/2019 OOP Java Project

    14/30

    14

    Denetim Masas -> Ynetimsel Aralar -> Veri Kaynaklar (ODBC)

    Sistem DSN sekmesinde Ekle -> Veri Kayna Ad: MYDB

    Veritaban Se -> MYDB.MDB dosyasn kopyaladnz klasr.

  • 8/6/2019 OOP Java Project

    15/30

    15

    8.3 ALITIRMA

    letim sisteminizdejar uzantl dosyalarjava.exe dosyas ile ilikilendirilmi ise, MyApp4.jar dosyasna

    ift tklanarak program altrlabilir. likili deilse, iletim sisteminde komut satr moduna geerek

    aadaki ekranda grnd ekilde altrlabilir.

    Ayrca, JRE dosyalarndan java.exe dosyasnn iletim sistemi ortam deikenlerinde yolununtanmlanm olmas gerekir. (path) Tanml deilse, java.exe dosyasnn bulunamadn belirten bir

    uyar mesaj alnr.

    Bu durumda, java.exe dosyasnn yolu iletim sisteminde tanmlanmal veya java.exe dosyasnn

    bulunduu klasre geilerek altrma komutu verilmelidir. Komut satrndaki MyApp4.jar dosyasnn

    tam yolu da yazlmaldr.

    JRE 1.6 srm (minumum) kurulmu, ODBC ayar yaplarak MYDB.MDB veritabann gsteren bir veri

    kayna tanmlanm ise program alacak ve aadaki ekran grnts gelecektir.

  • 8/6/2019 OOP Java Project

    16/30

    16

    9.PROGRAMIN KULLANILMASI

    Program 2 blm olarak tasarlanmtr. Bir blmde program alrken kullanlacak olan sabit tanmlar

    yaplmaktadr. rnek; rn Tanmlar, Tedariki Tanmlar, Departman Tanmlar, Kullanc Tanmlar.

    Dier blmde ise, srekli olarak yaplacak ilemler almaktadr. Bu blmden girilen bilgiler, hareket

    verisi olmaktadr. rnek; Talep Bilgileri, Sipari Bilgileri, rsaliye Bilgileri, Fatura Bilgileri vs.

    Programda ilk nce gerekli sabit tanmlarn yaplmas gerekmektedir. Bu tanmlar gerekte birer verinesnesi dir. lemler mensndeki bilgilerde, bu nesneler arasnda (zaman boyutunda) iliki

    kurulmasn salayan veri nesneleridir.

    Kullanc grafik arayzleri (GUI) basit, sade ve kullanl ekilde yaplmaya allmtr. Kullancnn veri

    girii yapmasn salayan bir veri giri formu ve girilen verilerin listelenmesini, bulunmasn ve

    silinmesini salayan liste (browse) formu yaplmtr. Yaplan ilem sonularnda, kullancya mutlaka

    mesaj verilmitir. rnein; Kayt Yapld, Hata Olutu vs vs.....

    Ayrca, hata denetimi maximum seviyede yaplmaya allm, meydana gelen hatalar kontrol altna

    alnarak programn kararllkla almasn srdrmesi salanmtr. rnek ekran grntleri aadadr:

  • 8/6/2019 OOP Java Project

    17/30

    17

    Kayt baarl gerekletiinde bilgi mesaj gsterilmitir.

    Eksik bilgi ile kayt yapldnda veya akma meydana geldiinde uyar mesajlar gsterilmitir.

  • 8/6/2019 OOP Java Project

    18/30

    18

    Yenile butonuna tklandnda veriler tablodan grid e geliyor.

    Bul butonuna tklandnda, aranan ID no soruluyor.

  • 8/6/2019 OOP Java Project

    19/30

    19

    Sil butonuna tklandnda, silincek ID no soruluyor.

  • 8/6/2019 OOP Java Project

    20/30

    20

    10.KAYNAKLAR

    10.1 ELEKTRONIK KAYNAKLAR

    1. Gazi niversitesi Biliim Enstits Online NYP Ders erikleri

    2. Gazi niversitesi Biliim Enstits rgn renim NYP Ders Slaytlar

    3. http://www.uml.org/

    4. http://www.agilemodeling.com/

    5. http://www.agiledata.org/

    6. http://atlas.kennesaw.edu/~dbraun/csis4650/A&D/index.htm

    7. http://www-01.ibm.com/software/rational/uml/

    8. http://msdn.microsoft.com/en-us/library/ff604964%28office.14%29.aspx

    9. http://www.oracle.com/technetwork/java/index.html

    10. http://netbeans.org/

    10.2 BASILI KAYNAKLAR

    1. Nesne Odakl Analiz ve Modelleme, Yrd.Do.Dr. brahim EDN, 2009

    2. Sistem Analizi ve Tasarm, Prof.Dr. Oya KALIPSIZ, Aye BUHARALI, Gksel BRCK, 2008 (2.Basm)

    3. UML ile Nesne Tabanl zmleme ve Tasarm, Bora GNGREN, 2009

    4. JAVA Programlama Dili Yazlm Tasarm, Altu B. ALTINTA, 2010

    5. Java ile Programlama ve Veri Yaplar, Blent OBANOLU, 2010 (2.Basm)

    6. Java Uygulamalar, Murat nan, 2007

    7. Teach Yourself JAVA in 21 Days, Laura LEMAY, Charles L. PERKINS, 1996

  • 8/6/2019 OOP Java Project

    21/30

    21

    11.PROGRAM KAYNAK KODU VE ACIKLAMALAR

    Frameler zerindeki nesnelerin tasarm kodlar ok uzun ve basit olduklarndan dolay aada yer

    almamaktadr. Okunabilirlii artrmak iin sadece metotlar alnmtr. Tasarm nesnelerini oluturan

    initComponents() metodu kurucu metotlardan arlmaktadr. Ayrca, veri giri snflarndan sadece

    KullaniciJFrame snfnn kodlar yer almaktadr. nk dier snflar ile ayn metotlara sahiptir sadece

    veri yaps deimektedir. Yazlmn tm kodlar, altrlabilir jar dosyas ile birlikte bulunmaktadr.

    Program balangcnda Main snf, myMenuJFrame snfn oluturmakta ve men formunu grnr

    yapmaktadr. myMenuJFrame snf ierisinde de bir menu ve ilerinde men seenekleri

    bulunmaktadr. (menuItem) Kullancnn tklad seenek olay yakalanarak ilgili form arlmakta ve

    grnr hale getirilmektedir. (KullaniciJFrame, UrunJFrame, DepartmanJFrame, TedarikciJFrame)

    Fiziki veritabann temsil eden Veritabani isimli bir snf oluturulmutur. Tm veritaban ilemleri bu

    snf aracl ile yrtlmektedir. Baglan(), baglantiKapat(), calistirSorgu(), olusturKayitSet() isimli

    metotlar bulunmaktadr. Snfn, ResultSet tipindeki kayitSet zellii public olarak tanmland. nk,

    sorgu sonucunda oluan kayt setine dardan eriilebilmesi gerekmektedir. Dier zellikleri private

    olarak tanmlanmtr. Bu snf, veritaban operasyonlarn merkezi bir hale getirmektedir. Veritaban

    tipi, srcs veya adresi deitiinde sadece bu snftaki baglan() metodunun deitirilmesi yeterli

    olmaktadr. Ayrca, kullanc arayz snflar ve veri snflar ierisinde herhangi bir sql komutuolmadndanjava.sql paketinin import edilmesine gerek kalmamtr.

    Veritaban zerindeki tablolar temsil eden veri snflar oluturulmutur. Kullanici, Urun, Departman ve

    Tedarikci. Her bir snfn yaps temsil ettii tablo yaps ile ayndr. Snfn tm zellikleri saklanmtr.

    Ancak public eriimde olan set ve get metotlar ile eriilebilir. Her veri snfnda, kaydet() ve sil()

    metotlar bulunmaktadr. Ayrca, veri snfnn kurucu metodunda veritaban balants alm, final

    metodunda veritaban balants kapatlmtr. Arayzde yaplan ilem ise, form nesnelerindeki

    deerlerin elde edilerek, veri snf nesnesine aktarlmas sonra ilgili metodun arlmasndan ibaretttir.

    Main.java

    /********** @author mazimli **********//* ** Ana meny oluturur ve gsterir ***/

    package myapp4;

    public class Main {

    private static MenuJFrame myMenuJFrame;

    public static void main(String[] args) {

    myMenuJFrame = new MenuJFrame();

    myMenuJFrame.setVisible(true);

    myMenuJFrame.setBounds(50, 50, 640, 480);

    }

    }

    MenuJFrame.java

    /*************** @author mazimli *****************/

    /*** Menden seilen seeneklere ait formlar gsterir ***/

    package myapp4;

    public class MenuJFrame extends javax.swing.JFrame {

  • 8/6/2019 OOP Java Project

    22/30

    22

    private static TedarikciJFrame myTedarikciJFrame;

    private static UrunJFrame myUrunJFrame;

    private static DepartmanJFrame myDepartmanJFrame;

    private static KullaniciJFrame myKullaniciJFrame;

    private static HakkindaJFrame myHakkindaJFrame;

    public MenuJFrame() {

    initComponents();

    }

    @SuppressWarnings("unchecked")

    //--KULLANICI TANIMLARI----------------------------------------------------

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {

    myKullaniciJFrame = new KullaniciJFrame();

    myKullaniciJFrame.setVisible(true);

    myKullaniciJFrame.setBounds(100, 100, 750, 500);

    }

    //--KAPAT-------------------------------------------------------------------

    private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {

    System.exit(0);

    }

    //--HAKKINDA-------------------------------------------------------------

    private void jMenuItem11ActionPerformed(java.awt.event.ActionEvent evt) {

    myHakkindaJFrame = new HakkindaJFrame();

    myHakkindaJFrame.setVisible(true);

    myHakkindaJFrame.setBounds(150, 150, 450, 150);

    }

    //--DEPARTMAN TANIMLARI-----------------------------------------------------private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {

    myDepartmanJFrame = new DepartmanJFrame();

    myDepartmanJFrame.setVisible(true);

    myDepartmanJFrame.setBounds(100, 100, 640, 480);

    }

    //--URUN TANIMLARI----------------------------------------------------------

    private void jMenuItem10ActionPerformed(java.awt.event.ActionEvent evt) {

    myUrunJFrame = new UrunJFrame();

    myUrunJFrame.setVisible(true);

    myUrunJFrame.setBounds(100, 100, 750, 500);

    }

    //--TEDARIKCI TANIMLARI-----------------------------------------------------

    private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {

    myTedarikciJFrame = new TedarikciJFrame();

    myTedarikciJFrame.setVisible(true);

    myTedarikciJFrame.setBounds(100, 100, 750, 550);

    }

  • 8/6/2019 OOP Java Project

    23/30

    23

    //--MAIN METOT---------------------------------------------------------------

    public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {

    public void run() {

    new MenuJFrame().setVisible(true);

    }

    });}

    }

    Veritabani.java

    /****************** @author mazimli *******************/

    /*** Veritaban snfdr. Veritaban ilemlerini gerekletirir. ****/

    package myapp4;

    import java.sql.*;

    import javax.swing.JOptionPane;

    public class Veritabani {

    private Connection baglanti;

    private Statement sorgu;

    public ResultSet kayitSet;

    public boolean baglan(){

    boolean sonuc = false;

    try {

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    baglanti = DriverManager.getConnection("jdbc:odbc:MYDB");sonuc = true;

    } catch (Exception e) {

    JOptionPane.showMessageDialog(null,e.getMessage(),"!!! HATA OLUSTU !!!",0);

    sonuc = false;

    }

    return sonuc;

    }

    public boolean olusturKayitSet(String sqlText){

    boolean sonuc = false;

    try{

    sorgu = baglanti.createStatement();

    kayitSet = sorgu.executeQuery(sqlText);

    sonuc = true;

    } catch (Exception e) {

    JOptionPane.showMessageDialog(null,e.getMessage(),"!!! HATA OLUSTU !!!",0);

    sonuc = false;

    }

    return(sonuc);

  • 8/6/2019 OOP Java Project

    24/30

    24

    }

    public boolean calistirSorgu(String sqlText){

    boolean sonuc = false;

    try{

    sorgu = baglanti.createStatement();

    sorgu.executeUpdate(sqlText);

    sonuc = true;} catch (Exception e) {

    JOptionPane.showMessageDialog(null,e.getMessage(),"!!! HATA OLUSTU !!!",0);

    sonuc = false;

    }

    return(sonuc);

    }

    public void baglantiKapat(){

    try{

    baglanti.close();

    } catch (Exception e) {

    JOptionPane.showMessageDialog(null,e.getMessage(),"!!! HATA OLUSTU !!!",0);

    }

    }

    }

    Kullanici.java

    /******************* @author mazimli *******************/

    /*** Kullanici veri yap snf. KULLANICI tablosuna karlk gelir.***/

    package myapp4;

    import javax.swing.JOptionPane;

    public class Kullanici {

    private int id;

    private String ad;

    private String soyad;

    private String departmanId;

    private int yonetici;

    private int admin;

    private int aktif;

    private String sifre;

    private Veritabani myDb;

    private boolean baglantiVar;

    private boolean sonuc;

    public int getId() {

    return id;

    }

  • 8/6/2019 OOP Java Project

    25/30

    25

    public void setId(int id) {

    this.id = id;

    }

    public String getAd() {

    return ad;

    }

    public void setAd(String ad) {

    this.ad = ad;

    }

    public String getSoyad() {

    return soyad;

    }

    public void setSoyad(String soyad) {

    this.soyad = soyad;

    }

    public String getDepartmanId() {

    return departmanId;

    }

    public void setDepartmanId(String departmanId) {

    this.departmanId = departmanId;

    }

    public int getYonetici() {

    return yonetici;

    }

    public void setYonetici(int yonetici) {

    this.yonetici = yonetici;

    }

    public int getAdmin() {

    return admin;

    }

    public void setAdmin(int admin) {

    this.admin = admin;

    }

    public int getAktif() {

    return aktif;

    }

    public void setAktif(int aktif) {

    this.aktif = aktif;

  • 8/6/2019 OOP Java Project

    26/30

    26

    }

    public String getSifre() {

    return sifre;

    }

    public void setSifre(String sifre) {

    this.sifre = sifre;}

    //--KURUCU METOT: VERITABANI SURUCUSUNU YUKLER VE BAGLANTIYI KURAR...

    public Kullanici(){

    myDb = new Veritabani();

    baglantiVar = myDb.baglan();

    }

    //--YOK EDICI METOT: BAGLANTIYI KESER, VERITABANI NESNESINI YOK EDER...

    @Override

    public void finalize() throws Throwable{

    myDb.baglantiKapat();

    super.finalize();

    }

    public void kaydet(){

    if (baglantiVar == true) {

    sonuc = myDb.calistirSorgu("INSERT INTO KULLANICI

    (ID,AD,SOYAD,DEPARTMANID,YONETICI,ADMIN,AKTIF,SIFRE) VALUES (" + id + ",'" + ad + "','" + soyad

    + "'," + departmanId + "," + yonetici + "," + admin + "," + aktif + ",'" + sifre + "')");

    if (sonuc == true) {

    JOptionPane.showMessageDialog(null,"Kayit Yapildi...\n\nId: " + id,"B i l g i",1);

    }}

    }

    public void sil(){

    if (baglantiVar == true) {

    sonuc = myDb.calistirSorgu("DELETE FROM KULLANICI WHERE ID=" + id);

    if (sonuc == true) {

    JOptionPane.showMessageDialog(null,"Kayit Silindi...\n\nId: " + id,"B i l g i",1);

    }

    }

    }

    }

    KullaniciJFrame.java

    /************************** @author mazimli *********************/

    /*** ************* Kullanc tanmlar form snf ********************/

    package myapp4;

  • 8/6/2019 OOP Java Project

    27/30

    27

    import java.sql.SQLException;

    import java.util.logging.Level;

    import java.util.logging.Logger;

    import javax.swing.JOptionPane;

    import javax.swing.table.DefaultTableModel;

    public class KullaniciJFrame extends javax.swing.JFrame {

    private Veritabani myDb;

    private boolean sonuc;

    /** Creates new form KullaniciJFrame */

    public KullaniciJFrame() {

    initComponents();

    }

    @SuppressWarnings("unchecked")

    //--KAPAT-----------------------------------------------------------------

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { this.dispose();

    }//GEN-LAST:event_jButton3ActionPerformed

    //--TEMIZLE---------------------------------------------------------------

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {

    jTextField1.setText("");

    jTextField2.setText("");

    jTextField3.setText("");

    jTextField4.setText("");

    jPasswordField1.setText("");

    }

    //--KAYDET----------------------------------------------------------------

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    Kullanici myKullanici = new Kullanici();

    try {

    myKullanici.setId(Integer.parseInt(jTextField1.getText()));

    myKullanici.setAd(jTextField2.getText());

    myKullanici.setSoyad(jTextField3.getText());

    myKullanici.setDepartmanId(jTextField4.getText());

    myKullanici.setYonetici(jComboBox1.getSelectedIndex());

    myKullanici.setAdmin(jComboBox2.getSelectedIndex());

    myKullanici.setAktif(jComboBox3.getSelectedIndex());

    myKullanici.setSifre(jPasswordField1.getText());

    myKullanici.kaydet();

    } catch (Exception e) {

    JOptionPane.showMessageDialog(null,e.getMessage(),"!!! HATA OLUSTU !!!",0);

    } finally {

  • 8/6/2019 OOP Java Project

    28/30

    28

    myKullanici = null;

    }

    }

    //--GRID TABLO ICI YENILENIYOR----------------------------

    private void yenile(String prmId) throws SQLException{

    int i = 0;int j = 0;

    int kayitSayi = 0;

    DefaultTableModel myModel;

    myModel = (DefaultTableModel) jTable1.getModel();

    j = myModel.getRowCount();

    for (i = 0; i < j; i++ ){ //-----grid tablo ici temizleniyor...

    myModel.removeRow(0);

    }

    i = 0;

    myDb = new Veritabani();

    sonuc = myDb.baglan();

    if (sonuc == true) {

    sonuc = myDb.olusturKayitSet("SELECT COUNT(*) AS ROWCOUNT FROM KULLANICI " + prmId);

    myDb.kayitSet.next();

    kayitSayi = myDb.kayitSet.getInt("ROWCOUNT")-1;

    jProgressBar1.setMaximum(kayitSayi);

    sonuc = myDb.olusturKayitSet("SELECT * FROM KULLANICI " + prmId + " ORDER BY ID");

    }try {

    while (myDb.kayitSet.next()) {

    myModel.addRow(new

    Object[]{myDb.kayitSet.getString("ID"),myDb.kayitSet.getString("AD"),myDb.kayitSet.getString("SOYA

    D"),myDb.kayitSet.getString("DEPARTMANID"),myDb.kayitSet.getString("YONETICI"),myDb.kayitSet.ge

    tString("ADMIN"),myDb.kayitSet.getString("AKTIF")});

    jProgressBar1.setValue(i);

    i++;

    }

    } catch (SQLException ex) {

    Logger.getLogger(KullaniciJFrame.class.getName()).log(Level.SEVERE, null, ex);

    }

    myDb.baglantiKapat();

    myDb = null;

    }

    //--YENILE----------------------------------------------------------------

    private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {

  • 8/6/2019 OOP Java Project

    29/30

    29

    try {

    yenile("");

    } catch (SQLException ex) {

    Logger.getLogger(KullaniciJFrame.class.getName()).log(Level.SEVERE, null, ex);

    }

    }

    //--BUL-------------------------------------------------------------------private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {

    String id;

    id = JOptionPane.showInputDialog(null,"[Kullanici Bul]\n\nID Giriniz:",null);

    if (id != null) {

    try {

    yenile("WHERE ID=" + id);

    } catch (SQLException ex) {

    Logger.getLogger(KullaniciJFrame.class.getName()).log(Level.SEVERE, null, ex);

    }

    }

    }

    //--SIL-------------------------------------------------------------------

    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-

    FIRST:event_jButton6ActionPerformed

    String id;

    id = JOptionPane.showInputDialog(null,"[Kullanici Sil]\n\nID Giriniz:",null);

    if (id != null) {

    Kullanici myKullanici = new Kullanici();

    try {

    myKullanici.setId(Integer.parseInt(id));

    myKullanici.sil();

    yenile("");

    } catch (Exception ex) {

    Logger.getLogger(KullaniciJFrame.class.getName()).log(Level.SEVERE, null, ex);

    } finally {

    myKullanici = null;

    }

    }

    }

    public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {

    public void run() {

    new KullaniciJFrame().setVisible(true);

    }

    });

    }

  • 8/6/2019 OOP Java Project

    30/30

    30

    }