oop java project
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
}