Akademik Bilişim 10 - XII. Akademik Bilişim Konferansı Bildirileri 10-12 Şubat 2010 Muğla Üniversitesi Anadolu Liselerine Öğretmen Atama İşleminin Nesneye Yönelimli Veritabanı Programlama Kullanılarak Gerçekleştirilmesi Haydar Tuna 1, O. Ayhan Erdem 2 1 Milli Eğitim Bakanlığı, Eğitim Teknolojileri Genel Müdürlüğü, Ankara 2 Gazi Üniversitesi, Teknoloji Fakültesi, Ankara haydartuna@meb.gov.tr, ayerdem@gazi.edu.tr Özet: Nesneye Yönelimli Programlama 1960 lı yıllarda ortaya çıkan bir yaklaşımdır. Karmaşık görülen problemler bu yaklaşımla çok kolay hale getirilebilir. Bu çalışmada ise klasik nesneye yönelimli programlarla istemci tarafında çözülebilen, bir ilde bulunan kurumlardaki ihtiyaca göre öğretmen atama problemi, veritabanı düzeyinde tabloya dönüştürülebilen nesneler kullanılarak sunucu tarafında çözülmüştür. İstemci sadece veritabanında bulunan saklı bir yordama üzerinde çalışılan ili, branşı parametre olarak göndermekte ve sonuçları bir veri setinde geri almaktadır. Anahtar Sözcükler: Nesneye Yönelimli Veritabanı Programlama, Saklı Yordam, Parametrik Sorgu Using the Object Oriented Database Programming to Perform Anatolian High School Teacher Appointment Process Abstract: Object-Oriented Programming is an approach emerged in the 1960s. Common complex problems can be solved very easy with this approach. In this study, according to the needs of institutions in a province of teacher assignment problem that can be solved with the classic object-oriented programs on the client side that has been solved on the server side using objects that can be converted into table in a database-level. Client-side which only sends two parameters to a stored procedure and then it gets the results back in a data set. Keywords: Object Oriented Database Programming, Stored Procedure, Parametric Query 1.Giriş Nesneye yönelimli programlama 1960 lı yıllarda ortaya çıkan bir yazılım yaklaşımıdır. Çıkış nedeni yapısal programlamadaki karmaşıklığı gidermek, daha açık ve rahat okunabilen, yüksek verime ve düşük maliyete sahip programlar hazırlamaktı [1]. Bu konuda oldukça başarılı da olundu. Bu yaklaşımda temel veri nesnedir. Her bir nesne bir sınıfın özelliklerini taşır. Nesne için bir sınıfın örneği olduğu söylenebilir [2]. Sınıf yapılarını anlamak, günlük hayattan örnek verilirse oldukça kolaydır. Örneğin bir araba sınıfı renk, tekerlek çapı gibi özelliklere sahiptir. Aynı araba sınıfının hızlanma eylemi vardır. Burada araba sınıfının renk, tekerlek çapı gibi büyüklükleri sınıfın özellikleridir ve bu iki özellik nesneye yönelimli yaklaşımda sırasıyla public ve private kelimeleri kullanılarak dışarıya görünür ya da görünmez. Arabanın hızlanması ise arabanın bir fonksiyonu olduğu için nesneye yönelimli yaklaşımda bu özellik metot olarak karşılık bulur. 509
Anadolu Liselerine Öğretmen Atama İşleminin Nesneye Yönelimli Veritabanı Programlama Kullanılarak Gerçekleştirilmesi - Haydar Tuna, O. Ayhan Erdem Nesneye yönelimli programlama yazılım verimliliğini, yeniden kullanılabilirlik özelliğinden dolayı artırır. Bunda en büyük pay bu yaklaşımın kalıtım ve soyut sınıf özellikleridir [3]. Kalıtım sınıflar arasında kod paylaşımı olarak tanımlanabilir [4]. Nesneye yönelimli programlama daha önceden de söylendiği gibi çok karmaşık gözüken problemleri basite indirgeyerek çözmemizi sağlar. Bu problemlerden bir tanesi de atamadır. Bu çalışmaya esas teşkil eden anadolu liseleri atamaları Milli Eğitim Bakanlığında, il milli eğitim müdürlükleri düzeyinde yapılmaktadır ve şekil 1 deki gibi iş adımları uygulanmaktadır. dikkat edilir. Buradan bir atamanın tamamen bitmesi için gerekli sürenin en az dört gün olduğu ortaya çıkar. Kontenjan girişi il düzeyinde okulların branşlardaki öğretmen ihtiyaçlarına göre veri girilmesidir. Bu veri girişinde sistem üzerinde okullara branş bazında ayrılan norm, mevcut, atanan ve ayrılan öğretmen sayıları dikkate alınır. Belirlenen ihtiyaç kadar il milli eğitim müdürlükleri bu sayıları girerler. Başvurular kontenjan girişinden en az bir gün sonra öğretmenlere açılır. Öğretmenlerin bu aşamada başvuru şartlarını taşıyıp taşımadığı, tercih edebilecekleri kurumlar ve atamaya esas puanları karşılarına gelir. Tercihler yapılıp başvurular kaydedildikten sonra ise yapılan tercihler çıktı alınarak, imzalanır ve çalışılan kuruma teslim edilir. Bu aşamadan hemen sonra personelin başvurusu çalıştığı kurum, ilçe milli eğitim müdürlükleri ve son olarak da il milli eğitim müdürlükleri tarafından elektronik ortamda onaylanır. Personelin özlük bilgilerinden kaynaklanan herhangi bir sorun olduğunda ya da başvuru şartlarını taşımadığı tespit edildiğinde bu üç onay mekanizmasından bir tanesi tarafından personelin başvurusu reddedilir. Bu aşamadan sonra personel isterse özlük bilgilerini düzelttirip yeniden başvuru yapabilir. Şekil 1. Anadolu Liseleri Atama Adımları Bu adımlardan birincisi, il milli eğitim müdürlüklerinin başvurulardaki okulların ihtiyaçlarını girebilmeleri ve başvuruları tamamlamaları için gerekli tarih aralıklarını girmeleri ile gerçekleştirilir. Bu tarih aralıkları girilirken ihtiyaç girişi olarak adlandırılan kontenjan girişleri ile başvuruların başlaması arasında en az bir gün, başvuruların başlaması ile bitmesi arasında en az bir gün, başvuruların bitmesi ve atamaların gerçekleşmesi arasında en az iki gün olmasına 510 Bir personelin başvurusunun geçerli olabilmesi için üç onay mekanizmasında onay vermesi gerekir. Bu onay işlemi yapılan personellerin başvuruları atama yapmak üzere aktarılır. Atama işlemi, klasik nesneye yönelimli yaklaşımla çözülür. Bu yaklaşımda kontenjan girişi yapılan kurumlar kurum nesnesine yüklenir. Kurum nesnesinde kod ve kontenjan bilgileri özellik, kontenjan azaltma ve artırma işlemi ise metot olarak tutulur. Buradaki ikinci nesne türü ise personel dir. Personel nesnesinde kimlik numarası, atamaya esas puan, görev süresi, kura numarası, çalıştığı kurum, yapılan tercihler ve atanıp atanmadığı bilgileri bulunur.
Akademik Bilişim 10 - XII. Akademik Bilişim Konferansı Bildirileri 10-12 Şubat 2010 Muğla Üniversitesi en önemli durum personelin idareci olmasında ortaya çıkar. Personel müdür, müdür başyardımcısı ya da müdür yardımcısı ise kurumunda öğretmen normu işgal etmez. Bu yüzden başka bir kuruma atandığında kendi kurumunda kontenjan artırıma gidilmez. Şekil 2. Kurum ve Personel nesneleri Problemin çözümü için öncelikle dizi şeklinde kurum nesneleri oluşturulur ve her bir dizi elemanına branş bazında kurumların kod ve kontenjan bilgileri yüklenir. Tüm personellerin tercihleri arasında dolaşıldıktan ve sorun olmaması durumunda döngülerden çıkılır ve atanan öğretmenlerin sonuçları veritabanına kaydedilir. Daha sonra öğretmenler aldıkları puana göre azalan, görev süresine göre azalan ve kura numarasına göre azalan olacak şekilde SQL sorgusu ile alınıp dizi şeklindeki personel nesnelerine yüklenir. Eğer öğretmenlerin şu anda çalıştıkları kurum kontenjan listesinde ise kontenjanlar birer artırılır. Kurum nesnesine yüklenen kontenjan bilgileri bu aşamadan sonra geri çağrılmak üzere başka bir nesneye kopyalanır. Kurum ve personel nesneleri bu şekilde hazır olduktan sonra bir döngü içinde öğretmenlerin tercihlerine bakılır. Eğer kurum kontenjanı uygunsa öğretmen atanır personel nesnesinin atandi özelliği 1 yapılır. Öğretmen tercihine atandıktan sonra kendi kurumunun kontenjan listesinde olup olmadığı kontrol edilir. Eğer böyle bir durum söz konusu ise personelin kurumundaki kontenjan sayısı bir artırılır. Daha sonra bulunduğu kurumu boşaltan personelin yerine, bu kurumu tercih eden başka öğretmenlerin atanması ve tercihlerin yeniden taranması için SorunVar değişkeninin değeri True yapılır. Personel hiçbir tercihine atanamadı ise bu değişken üzerinde işlem yapılmaz. Başka bir kuruma atanarak, yer boşaltmadaki 511 Şekil 3. Atama işlemi akış diyagramı Nesneye yönelimli programlama ile çözülen atama probleminde veriler nesnelere yüklenirken bir bağlantı yapılır daha sonra bu bağlantı üzerinden SQL sorguları kullanılarak veri kümesi alınıp nesnelere yüklenir. Tüm bu işlemler yapılırken sorgularda parametre kullanılarak daha güvenli bir iletişim sağlanır. Örneğin atama probleminde üzerinde çalışılan il ve branş parametrik olarak sorguya gönderilip veri kümesi döndürülebilir. Bunun dışında kontenjanların kurum nesnelerine, öğretmen bilgilerinin personel nesnelerine yüklenmesi
Anadolu Liselerine Öğretmen Atama İşleminin Nesneye Yönelimli Veritabanı Programlama Kullanılarak Gerçekleştirilmesi - Haydar Tuna, O. Ayhan Erdem ve atama sonuçlarının kaydedilmesi aşamaları doğrudan veritabanında bulunan gömülü programlar vasıtasıyla da yapılabilir. Bu çalışmada ise Oracle veritabanı üzerinde PL/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öndermekte ve doğrudan atama sonuçları almaktadır. Bundan sonraki bölümde veritabanı düzeyinde bu işlemin nasıl gerçekleştiği üzerinde durulacak; son bölümde ise çalışmadan elde edilen sonuçlar tartışılacaktır. 2. Atama İşleminin Gerçekleştirilmesi Veritabanı düzeyinde nesneye yönelimli programlama işlemini gerçekleştirmek için sınıflara benzeyen type yapıları kullanılır. Bu yapılarda öncelikle bir nesne oluşturulur daha sonra bu nesne 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ılan kontenjan nesnesi şu şekilde oluşturulabilir: Create or Replace Type ILSISWEB.ATO_KONTENJAN_OBJ AS OBJECT ( AIK_KURUM_KODU NUMBER(8), AIK_KONTENJAN NUMBER(10), CONSTRUCTOR FUNCTION ATO_ KONTENJAN_OBJ( KURUM_KODU NUMBER, KONTENJAN NUMBER) RETURN SELF AS RESULT, MEMBER PROCEDURE KontenjanAzalt, MEMBER PROCEDURE KontenjanArtir ); Yapılan bu tanımlama içinde oluşturulan nesnenin özellik ya da metotları belirlenir. Örneğin bu yapıda AIK_KURUM_KODU nesnenin özelliğidir ve sayısaldır, CONSTRUCTOR FUNCTION ATO_KONTENJAN_OBJ ise nesne ile aynı isimde olan ve nesne ilk yaratıldığında çalışan (constructor) metottur. Bunun dışında MEMBER PROCEDURE KontenjanAzalt gibi kullanıcı tanımlı nesne metotları da bu yapı içerisinde kullanılabilir. Veritabanı nesnesi bu şekilde oluşturulduktan sonra kullanılan metotlar nesne gövdesinde tanımlanır. Örneğin kontenjan nesnesi için bu tanımlama şu şekilde yapılabilir: CREATE OR REPLACE TYPE BODY ILSISWEB.ATO_KONTENJAN_OBJ AS CONSTRUCTOR FUNCTION ATO_KONTENJAN_OBJ(KURUM_KODU NUMBER, KONTENJAN NUMBER) RETURN SELF AS RESULT AS BEGIN SELF.AIK_KURUM_KODU := KURUM_KODU; SELF.AIK_KONTENJAN := KONTENJAN; RETURN; MEMBER PROCEDURE KontenjanAzalt IS BEGIN SELF.AIK_KONTENJAN:=SELF.AIK_ KONTENJAN-1; IF SELF.AIK_KONTENJAN < 0 THEN SELF.AIK_KONTENJAN := 0; END IF; MEMBER PROCEDURE KontenjanArtir IS BEGIN SELF.AIK_KONTENJAN:=SELF.AIK_ KONTENJAN+1; Bu tanımlamada geçen SELF ifadesi nesneye yönelimli yaklaşımda this kelimesine karşılık gelir. Metot tanımlanırken bu dilde BEGIN blokları kullanılır. Bloklar içinde ise her 512
Akademik Bilişim 10 - XII. Akademik Bilişim Konferansı Bildirileri 10-12 Şubat 2010 Muğla Üniversitesi türlü karar yapıları, döngüler gibi birçok PL/ SQL ifadesi kullanılabilir. Nesne tanımlaması bittikten sonra nesneyi referans olarak kabul eden tablo tipi oluşturulur. Bunun için nesne oluşturmakta kullandığımız Create Type yapısında AS OBJECT ifadesi yerine IS TABLE OF NesneAdi ifadesini kullanmamız yeterlidir. Örneğin oluşturulan kontenjan nesnesinin tablo tipini oluşturmak için şu şekilde bir yapı kullanmak yeterlidir: CREATE OR REPLACE TYPE ILSISWEB.ATO_KONTENJAN_OBJ_T IS TABLE OF ILSISWEB.ATO_KONTENJAN_ OBJ; Bu şekilde tablo tipi tanımlanan nesne PL/SQL blokları içinde başka bir tablo nesnesine referans olur ve bu tablonun boyutu girilir: kurum ILSISWEB.ATO_KONTENJAN_OBJ_T:= ATO_ KONTENJAN_OBJ_T(); kurum.extend( kayitsayisi ); Oluşturulan kontenjan nesnesinin tablo tipinden türetilen kurum nesnesindeki her bir satır artık kontenjan nesnesinin tüm özellik ya da metotlarını destekler. Örneğin bu tablo nesnesinin i. satırındaki kurumun kontenjanı azaltılmak istendiğinde kurum(i).kontenjanazalt (nesneadi.özellik ya da metot) şeklinde bir ifade kullanılabilir. Kurumlar ve kontenjanları bu şekilde nesnelere alındıktan sonra benzer şekilde aynı işlemler personel nesnesi içinde uygulanabilir. Bundan sonraki aşamada ise şekil 3 deki akış diyagramının aynısı kullanılarak veritabanı düzeyinde atama işlemi gerçekleştirilir. Uygulama içerisinde istemci bilgisayar ile haberleşme bir defa il ve branş parametreleri almada gerçekleşmekte ve istemciye işlem sonunda başarılı ya da başarısız olunduğuna dair mesaj ile geri bildirimde bulunulmaktadır. Uygulama Türkiye de bulunan 81 il milli eğitim müdürlüğü tarafından 18 farklı branşta gerçekleştirilmiştir. Sistemin çalışmasında ise çift işlemcili 15 tane uygulama sunucusu ve 1 tane 32 işlemcili mainframe veritabanı sunucusu kullanılmıştır. 2. Sonuç ve Öneriler Klasik nesneye yönelimli yaklaşımda atama problemi istemci üzerinde çözülmektedir. Bu atama türü için ise kurum kontenjanlarının, personel bilgilerinin alınması ve atama sonuçlarının tek 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ı algoritma kullanılarak veritabanı düzeyinde çözülmesi amaçlanmıştır. Yapılan çalışmadaki diğer bir hedef ise istemci ile an az haberleşme ve en az sayıda parametre kullanılarak haberleşmenin sağlanıp atama işleminin sonuçlandırılmasıdır. Hedeflenen bu iki amaca veritabanı düzeyinde nesneye yönelimli programlama teknikleri kullanılarak ve parametrik sorgularla ulaşılmıştır. Bunun dışında uygulama kullanım alanı olarak 81 il merkezinde başarılı bir şekilde çalıştırılmış ve sonuçlar anlık olarak bu merkezler tarafından alınmıştır. Kaynaklar [1] Franca, P.B., Software engineering education the shift to object oriented programming, Computer Software and Applications Conference, 71-76, 1994 [2] Gossain, S. Anderson, D.B., Applications of Object-Oriented Programming, IEE Colloquium on 16 Nov 1989, (6):1-4, 1989 513
Anadolu Liselerine Öğretmen Atama İşleminin Nesneye Yönelimli Veritabanı Programlama Kullanılarak Gerçekleştirilmesi - Haydar Tuna, O. Ayhan Erdem [3] Gossain, S. Anderson, D.B., Applications of Object-Oriented Programming, IEE Colloquium on 16 Nov 1989, 101-112, 1989 [4] Al-Haddad H.M., George K.M., Samadzadeh M.H., Description of a new approach to object inheritance, Applied Computing Symposium, 289-296,1990 514