10.07.2015 Views

Akademik Bilişim '10 10 - 12 Şubat 2010 Muğla

Akademik Bilişim '10 10 - 12 Şubat 2010 Muğla

Akademik Bilişim '10 10 - 12 Şubat 2010 Muğla

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Anadolu Liselerine Öğretmen Atama İşleminin Nesneye Yönelimli Veritabanı ProgramlamaKullanılarak Gerçekleştirilmesi - Haydar Tuna, O. Ayhan Erdem<strong>Akademik</strong> Bilişim’<strong>10</strong> - XII. <strong>Akademik</strong> Bilişim Konferansı Bildirileri<strong>10</strong> - <strong>12</strong> Şubat 20<strong>10</strong> Muğla Üniversitesive atama sonuçlarının kaydedilmesi aşamalarıdoğrudan veritabanında bulunan gömülü programlarvasıtasıyla da yapılabilir.Bu çalışmada ise Oracle veritabanı üzerindePL/SQL dili kullanılarak nesneler yaratılıp bunlarüzerinden atama işlemi gerçekleştirilmiştir.Atama işlemini gerçekleştiren uygulama programıise sadece il ve branş parametrelerini PL/SQL paketi içinde bulunan prosedüre göndermekteve doğrudan atama sonuçları almaktadır.Bundan sonraki bölümde veritabanı düzeyindebu işlemin nasıl gerçekleştiği üzerinde durulacak;son bölümde ise çalışmadan elde edilensonuçlar tartışılacaktır.2. Atama İşleminin GerçekleştirilmesiVeritabanı düzeyinde nesneye yönelimli programlamaişlemini gerçekleştirmek için sınıflarabenzeyen type yapıları kullanılır. Bu yapılardaöncelikle bir nesne oluşturulur daha sonra bunesne türü referans gösterilerek tablo tipi oluşturulur.Oluşturulan bu tablonun her bir satırınesne türünün özellik ya da metotlarını kullanır.Örneğin anadolu liseleri atamalarında kullanılankontenjan nesnesi şu şekilde oluşturulabilir:Create or Replace TypeILSISWEB.ATO_KONTENJAN_OBJ AS OBJECT(AIK_KURUM_KODU NUMBER(8),AIK_KONTENJAN NUMBER(<strong>10</strong>),CONSTRUCTOR FUNCTION ATO_KONTENJAN_OBJ(KURUM_KODU NUMBER,KONTENJAN NUMBER)RETURN SELF ASRESULT,MEMBER PROCEDURE KontenjanAzalt,MEMBER PROCEDURE KontenjanArtir);Yapılan bu tanımlama içinde oluşturulan nesneninözellik ya da metotları belirlenir. Örneğinbu yapıda AIK_KURUM_KODU nesneninözelliğidir ve sayısaldır, CONSTRUCTORFUNCTION ATO_KONTENJAN_OBJ isenesne ile aynı isimde olan ve nesne ilk yaratıldığındaçalışan (constructor) metottur. Bunundışında MEMBER PROCEDURE KontenjanAzaltgibi kullanıcı tanımlı nesne metotları dabu yapı içerisinde kullanılabilir.Veritabanı nesnesi bu şekilde oluşturulduktansonra kullanılan metotlar nesne gövdesindetanımlanır. Örneğin kontenjan nesnesi için butanımlama şu şekilde yapılabilir:CREATE OR REPLACE TYPE BODYILSISWEB.ATO_KONTENJAN_OBJ ASCONSTRUCTOR FUNCTIONATO_KONTENJAN_OBJ(KURUM_KODUNUMBER,KONTENJANNUMBER)RETURN SELF ASRESULTASBEGINSELF.AIK_KURUM_KODU := KURUM_KODU;SELF.AIK_KONTENJAN := KONTENJAN;RETURN;END;MEMBER PROCEDURE KontenjanAzalt ISBEGINSELF.AIK_KONTENJAN:=SELF.AIK_KONTENJAN-1;IF SELF.AIK_KONTENJAN < 0 THENSELF.AIK_KONTENJAN := 0;END IF;END;MEMBER PROCEDURE KontenjanArtir ISBEGINSELF.AIK_KONTENJAN:=SELF.AIK_KONTENJAN+1;END;END;Bu tanımlamada geçen SELF ifadesi nesneyeyönelimli yaklaşımda this kelimesine karşılıkgelir. Metot tanımlanırken bu dilde BEGINEND; blokları kullanılır. Bloklar içinde ise hertürlü karar yapıları, döngüler gibi birçok PL/SQL ifadesi kullanılabilir.Nesne tanımlaması bittikten sonra nesneyi referansolarak kabul eden tablo tipi oluşturulur.Bunun için nesne oluşturmakta kullandığımızCreate Type yapısında AS OBJECT ifadesi yerineIS TABLE OF NesneAdi ifadesini kullanmamızyeterlidir. Örneğin oluşturulan kontenjannesnesinin tablo tipini oluşturmak için şuşekilde bir yapı kullanmak yeterlidir:CREATE OR REPLACE TYPEILSISWEB.ATO_KONTENJAN_OBJ_TIS TABLE OF ILSISWEB.ATO_KONTENJAN_OBJ;Bu şekilde tablo tipi tanımlanan nesne PL/SQLblokları içinde başka bir tablo nesnesine referansolur ve bu tablonun boyutu girilir:kurumILSISWEB.ATO_KONTENJAN_OBJ_T:= ATO_KONTENJAN_OBJ_T();kurum.EXTEND( kayitsayisi );Oluşturulan kontenjan nesnesinin tablo tipindentüretilen kurum nesnesindeki her bir satırartık kontenjan nesnesinin tüm özellik ya dametotlarını destekler. Örneğin bu tablo nesnesinini. satırındaki kurumun kontenjanı azaltılmakistendiğinde kurum(i).KontenjanAzalt(nesneadi.özellik ya da metot) şeklinde bir ifadekullanılabilir.Kurumlar ve kontenjanları bu şekilde nesnelerealındıktan sonra benzer şekilde aynı işlemlerpersonel nesnesi içinde uygulanabilir. Bundansonraki aşamada ise şekil 3’deki akış diyagramınınaynısı kullanılarak veritabanı düzeyindeatama işlemi gerçekleştirilir.Uygulama içerisinde istemci bilgisayar ilehaberleşme bir defa il ve branş parametrelerialmada gerçekleşmekte ve istemciye işlem sonundabaşarılı ya da başarısız olunduğuna dairmesaj ile geri bildirimde bulunulmaktadır.Uygulama Türkiye’de bulunan 81 il milli eğitimmüdürlüğü tarafından 18 farklı branşta gerçekleştirilmiştir.Sistemin çalışmasında ise çiftişlemcili 15 tane uygulama sunucusu ve 1 tane32 işlemcili mainframe veritabanı sunucusukullanılmıştır.2. Sonuç ve ÖnerilerKlasik nesneye yönelimli yaklaşımda atamaproblemi istemci üzerinde çözülmektedir. Buatama türü için ise kurum kontenjanlarının,personel bilgilerinin alınması ve atama sonuçlarınıntek tek kaydedilmesi aşamasında veritabanıile haberleşme gerçekleşmektedir.Bu uygulamada klasik nesneye yönelimli yaklaşımlaçözülen atama probleminin aynı algoritmakullanılarak veritabanı düzeyinde çözülmesiamaçlanmıştır.Yapılan çalışmadaki diğer bir hedef ise istemciile an az haberleşme ve en az sayıda parametrekullanılarak haberleşmenin sağlanıp atama işlemininsonuçlandırılmasıdır.Hedeflenen bu iki amaca veritabanı düzeyindenesneye yönelimli programlama teknikleri kullanılarakve parametrik sorgularla ulaşılmıştır.Bunun dışında uygulama kullanım alanı olarak81 il merkezinde başarılı bir şekilde çalıştırılmışve sonuçlar anlık olarak bu merkezler tarafındanalınmıştır.Kaynaklar[1] Franca, P.B., “Software engineering educationthe shift to object oriented programming”,Computer Software and Applications Conference,71-76, 1994[2] Gossain, S. Anderson, D.B., “Applicationsof Object-Oriented Programming”, IEE Colloquiumon 16 Nov 1989, (6):1-4, 1989520521

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!