HACETTEPE ÜNİVERSİTESİ
|
|
- Iskender Sevim
- 8 yıl önce
- İzleme sayısı:
Transkript
1 HACETTEPE ÜNİVERSİTESİ Bilgisayar Mühendisliği Bölümü Yazılım Mühendisliği Laboratuvarı Common-Digester Yardım Belgesi M.Aykut YİĞİTEL
2 İçindekiler 1. Dış Bağımlılıklar 3 2. Giriş 3 3. Arayüz Tanımları 4 4. Sınıf Tanımları 4 5. Digester Yapılanış Özellikleri Nesne Yığıtı Öğe Eşleştirme Örüntüleri İşleme Kuralları 7 6. Logging 9 7. Kullanım Örnekleri Basit Bir Nesne Ağacı Yaratma Bir Struts Yapılanış Kütüğünün İşlenmesi XML Belgelerinde Gövde Metninin Ayrıştırılması Kaynakça 13 2
3 Digester paketi, XML belgelerinin kural tabanlı olarak işlenmesini sağlar. Dış Bağımlılıklar Digester bileşeni aşağıdaki standart kitaplıkların gerçekleştirimine bağımlıdır: XML Parser JAXP/1.1 belirtimlerine uyumlu olarak Ayrıca bir takım Jakarta Commons kitablığı bileşenlerinin uyumlu bir kümesine bağımlıdır. Uyumlu Bağımlılık Kümeleri Digester +Logging 1.0.x +BeanUtils 1.x +Collections 2.x Digester +Logging 1.0.x +BeanUtils 1.x +Collections 3.x Digester +Logging 1.0.x +BeanUtils Giriş XML biçimli veri ile uğraşan bir çok uygulama ortamında, XML belgesinin içiçe geçmiş belirli XML öğe örüntülerine rastlanıldığında belirli Java nesnelerinin yaratıldığı (veya varolan nesnelerin yöntemlerinin çağırıldığı) olaya dayalı biçimde işlenebilmesi çok yararlı olacaktır. Yalın XML belgesi ayrıştırma yaklaşımını (SAX) kullanmış olan yazılım geliştiriciler, Digester in üst düzey, SAX olayları için daya kullanışlı bir arayüze sahip olduğunu hatırlayacaklardır. Bir Degister kullanabilmek için, aşağıdaki ana maddeler gereklidir: org.apache.commons.digester.digester sınıfının yeni bir örneğini yaratılır. Daha önce istemde bulunulmuş ayrıştırma işlemleri tamamlandığı ve belirli bir Digester örneği aynı anda birden çok iş parçacığı(thread) tarafından kullanılmadığı müddetçe önceden yaratılmış Digester örnekleri güvenli olarak kullanılabilir. Bir daha ki ayrıştırma işlemini başlattığınızda Digester in işlemini uyarlayacak olan yapılanış özelliklerinden(configuration properties) istedikleriniz kurulur. İsteğe bağlı olarak, istenilen başlangıç nesnes(ler)i Digester in nesne yığıtına(object stack) konulur. Bir girdi belgesinde rastlanıldığında işletme kurallarının (processing rules) devreye girmesi istenilen öğe eşleme örüntüleri(element matching patterns) belirlenir. Belirli bi örüntü için birden çok kural belirlenebilir. Eğer bir örüntü için birden çok kural varsa, kurallar listelenme sıralarına göre yürütülür. digester.parse() yötemi çağrılır. Ayrıştırı tarafından fırlatılacak olan IOException ya da SAXException larını ya da herhangi bir işlem kuralı tarafından fırlatılacak olacak işetim zamanı(runtime) anlatımını(expression) yakalamak için hazırlıklı olmalıyız. 3
4 org.apache.commons.digester paketinin içerdiği sınıf ve arayüzlere genel bir bakış atalım. Arayüz Tanımları ObjectCreationFactory FactoryCreateRule(daha önce açıklanmıştı) ile birlikte kullanılması için tasarlanmış bir arayüzdür. Rules kurallar kümesi tanımlamak için öngörülmüş arayüzdür. Ayrıştırma işleminde karşılaşılan içiçe geçmiş nesnelerde eşleşme ve ilgili kuralların işletilmesini de sağlar. RuleSet bütün bir kural tanımının yapılması işini kısa yoldan yapmak için öngörülmüştür. Sınıf Tanımları AbstractObjectCreationFactory ObjectCreationFactory gerçekleştirimleri için soyut temel sınıftır. AbstractRulesImpl Rules gerçekleştirimleri için temel servisleri sağlar BeanPropertySetterRule gövde metni üzerindeki bean özelliklerini kurar. CallMethodRule CallParamRule ile aldığı değiştirgeleri kullanarak yığıtın üstündeki sınıfın bir metodunu çağırır. CallParamRule CallMethodRule ile kullanılacak değiştirge değerlerini saklar. Digester digester, bir XML girdi akımında belirli içiçe geçmiş örüntü öğelerinin bulunması ve bunlarla ilgili ayrıştırma işlemine başlamadan tanımlanmış olan kuralların çalıştırılmasını sağlar. ExtendedBaseRules karışık şemalar için RulesBase sınıfının uzantısı FactoryCreateRule yeni bir nesne yaratılıp yığıta konulması için ObjectCreationFactory sınıfını kullanır. NodeCreateRule kuralla eşleşen XML öğesini içeren bir DOM node yaratır. ObjectCreateRule yeni bir nesne yaratığ yığıta koyan kural gerçekleştirimidir. ObjectParamRule CallMethodRule için değiştirgeleri saklayan kural gerçekleştirimir. ParserFeatureSetterFactory ayrıştırıcıya dayalı bir SAXParser yaratır. PathCallParamRule CallMethodRule için yol(path) bilgisini saklayan ve Digester ı içeren kural gerçekleştirimi. RegexMatcher RegexRules için düzgün deyim eşleşme stratejisi. Rule belirli bir XML öğesine rastlanıldığında yapılması gerekenlerin belirtildiği sınıf. RulesBase kuralların standart davranış biçimini destekleyen Rules arayüzünün varsayılan gerçekleştirimi. RuleSetBase RuleSet arayüzünü gerçekleyen temel sınıf. SetNestedPropertiesRule bu sınıfın özellikleriyle eşleşen oğul öğelere dayalı olarak yığıtın üstündeki nesnenin özelliklerini kuran sınıf. SetNextRule yığıtın en üstünün bir altındaki nesnenin(ata) bir metodunu, yığıtın en üstündeki nesneyi(oğul) değiştirge olarak geçirerek çağıran sınıf. SetPropertiesRule yığıtın üstündeki nesnenin özelliklerini kuran sınıf. SetPropertyRule yığıtın en üstündeki nesnenin belirli bir özelliğini kuran sınıf. SetRootRule yığıttaki kök nesnenin bir metodunu, yığıtın en üstündeki nesneyi(oğul) değiştirge olarak geçirerek çağıran sınıf. 4
5 SetTopRule yığıtın en üstündeki nesnenin(parent) setparent nesnesini, yığıtın en üstünün bir altındaki nesneyi(child) geçirge olarak geçirerek çağıran sınıf. SimpleRegexMatcher basit regex eşleşme algoritması. Substitutor yerine koyma stratejileri için mantıksal bir arayüz. WithDefaultsRulesWrapper herhangi bir eşleşme sağlanmadığında varsayılan kuralları döndüren Rules Decorator. Digester Yapılanış Özellikleri (Configuration Properties) Bir org.apache.commons.digester.digester örneği, işlemini uyarlamak için kullanılan birçok yapılanış özelliğine sahiptir. parse() veya türevindeki yöntemleri cağırmadan önce, ayrıştırma işleminde etkili olabilmesi için bu özelliklerin yapılandırılmış olması gerekmektedir. Özellik classloader ErrorHandler namespaceaware rulenamespaceuri rules Betimleme ObjectCreateRule ve FactoryCreateRule kuralları tarafından gerektiğinde, sınıfların yüklenmesi için kullanılan sınıf yükleyicileri isteğe bağlı olarak belirtebilirsiniz. Ayrıştırma hataları oluştuğunda bildirilecek olan SAX errorhandler ı isteğe bağlı olarak belirtebilirsiniz. Varsayılan olarak, rastlanılan herhangi bir ayrıştırma hatasının günlüğü tutulur(logged) ve Digester işlemine devam eder. True ya kurulduğunda ayrıştırımın gerçekleştiriminin XML namespace lerden haberdar olarak yapılmasını sağlayan boole. Sonradan eklenen bütün kuralların ilişkili olduğu public URI of the namespace veya eklenen kuralların hiçbir namespace ile ilişkili olmadığı boş(null) Rule örneklerinin o anki içiçe pluggable örüntülerle eşleşmesini sağlayan Rules bileşeni. usecontextclassloader FactoryCreateRule ve ObjectCreateRule tarafından gereksenen uygulama sınıflarının o anki iş parçacığı(thread) nın bağlam sınıf yükleyicisi (context class loader) tarafından yüklenmesi için true ya kurulması gereken boole. validating XML belgesinin DOCTYPE bildirisinde belirtildiği gibi bir belge biçim tanımlamasına (Document Type Definition) göre geçerli kılınması istendiğinde true ya kurulması gereken boole. Varsayılan değer olan yanlış(false), valid belgelerin yerine sadece well formed XML belgelerini bulan bir ayrıştırma talep eder. Yukarıda tanımlanan sayıl özelliklere ek olarak, DOCTYPE bildirisi ile ilgilendirilen bir belge biçim tanımlamasının yerel bir kopyasını yazabilirsiniz. Böyle bir yazım XML ayrıştırıcıya, belirtilen puplic tanımlayıcıyla bir DOCTYPE bildirisine rastladığında, DOCTYPE bildirisindeki belge biçim tanımlasını yerine, yazılı sistem tanımlayıcısındaki(bir URL) hakiki belge biçim tanımı içeriğini kullanmasını söyler. Örneğin, Struts framework denetleyici servlet i, Struts yapılanış kütüğünde DTD nin yerel kopyasını kullanmasını söylemek için aşağıdaki yazımı kullanır. Bu, Struts un internete bağlı olmayan çevrelerde de kullanılmasını sağlar ve internete bağlı sitelerdeki işlemleri de hızlandırır.(çünkü ağ üzerine açılmaktan kaçınır). 5
6 URL url = new URL("/org/apache/struts/resources/strutsconfig_1_0.dtd"); digester.register ("-//Apache Software Foundation//DTD Struts Configuration 1.0//EN",url.toString()); Örnekte java.lang.classloader.getresource() yada java.lang.classloader.getresourceasstream() metodlarına geçirilen değiştirge(parameter) yol(path) gösterilmiştir. Nesne Yığıtı org.apache.commons.digester.digester ın sıkça rastlanınlan kullanımında devingen olarak oluşturulan java nesne ağaçları vardır. Bu ağacı oluşturan nesnelerin özellikleri üzerinde çalışılan XML belgesine bağlıdır. Digester paketi ilk olarak Struts un bir parçası olarak tasarlandı, ancak daha sonra fadalı olacağı düşünülerek başlı başına bir paket olarak öngörüldü. Nesne yığıtının öngördüğü işlermler şunlardır: clear() nesne yığıtının o anki içeriğini temizler peek() yığıtın en üstündeki nesneye ait bir referans dödürür ancak onu yığıttan çıkarmadan pop() yığıtın en üstündeki nesneyi yığıttan siler ve döndürür push() yığıtın en üstüne yeni bir nesne ekler Belirli bir XML öğesine rastlanıldığına ona dair bir nesne oluşturulur ve bu yığıta eklenir. İç içe geçmiş bu örüntünün sonuna gelininceye değin o nesne yığıtta kalır. Öğenin sonuna gelindiğine yığıttan alınır. Yaratılan nesneleri nasıl ilişkilendireceğim? Digester, yığıtın ilk elemanın diğer elemanlara parametre olarak geçirilebildiği fonksiyonları standart olarak öngörür. Bu kural, nesneler arasında ata-oğul ilişkisi kurmamızı sağlar. Bire-bir ve bire-birçok ilişkiler kurmamız kolaylaşır. İlk yaratılan nesneye dair bir referans nasıl elde edeğim? nesne yaratma kuralında açıkladığımız gibi XML belgesinin sonuna gelindiğinde yığıttaki bütün nesneler silinir. Buna rağmen Digester yığıta ilk konulan nesnenin referansını saklar. parse() metodundan geriye dönen değer yığıta ilk olarak konulan nesneye referansdır. Parse() metodunu çağırmadan önce yığıtta saklanacak referanslar ile yığıta eklenecek nesneler arasında ata-oğul ilişkisi kurulabilir. Öğe Eşleştirme Örüntüleri org.apache.commons.digester.digester parser ı, incelemekte olduğumuz XML belgesinin öğe sıradüzeni içinde dolaşabilmemizi sağlar. Kullanıcının dikkatini daha çok incelenen XML belgesinde belirli bir iç içe geçmis örüntüye rastlanıldığında ne yapılacağına çevirir. Bu ayarlamaların yapılmasına olanak sağlayan düzenek öğe eşleştirme örüntüleri olarak bilinir. 6
7 Çok basit bir öğe eşleştirme örüntüsü sıradan bir dizgi olan a. Bu örüntü XML belgesinde ne zaman bir <a> öğesine rastlanırsa eşleşmiş olur. Kaç sefer rastlanıldığının bir önemi yoktur. İç içe geçmiş <a> öğeleri bu örüntü ile eşleşmeş. Bu çeşit eşleşmeleri daha sonra açıklayacağız. Bir sonraki öğe eşleştirme örüntüsü örneği a/b. Bu örüntü <a> öğesinin içinde iç içe geçmiş <b> öğesi olduğunda eşleşir. Bu eşleşme incelene XML belgesinin içeriğine göre istenildiği kadar gerçekleşebilir. İstenilen derinliği belirleyebilmek için eğik çizgi(slash) kullanılır. a, a/b ve a/b/c örüntüleri için işleme kuralları işleme kuralları yazdığımızı farzedelim. Aşağıdaki içeriğe sahip bir XML belgesi geldiğinde, belirtilen örüntüler eşleşecektir: <a> <b> <c/> <c/> </b> <b> <c/> <c/> <c/> </b> </a> -- örüntü "a" ile eşleşir -- örüntü "a/b" ile eşleşir -- örüntü "a/b/c" ile eşleşir -- örüntü "a/b/c" ile eşleşir -- örüntü "a/b" ile eşleşir -- örüntü "a/b/c" ile eşleşir -- örüntü "a/b/c" ile eşleşir -- örüntü "a/b/c" ile eşleşir Eşleşme örüntü dizgilerinde * karakterini(wildcard) kullanarak nasıl iç içe geçmiş olduğuna bakılmaksızın belirli bir XML öğesinin eşleşmesi sağlanabilir. Örneğin */a örüntüsü, belgenin içinde herhangi bir pozisyondaki(iç içe geçme bakımından) <a> ile eşleşir. Belirli bir XML öğesine rastlandıında, o öğeye dair birden çok kuralın çalıştırılması gerekmesi çok doğaldır. Çünkü wilcard ların kullanılmasıyla, o öğeyle uyuşan birsürü kural olabilir. Bu gibi durumlarda, sırasıyla o öğeyle eşleşen bütün kurallar işletilir. İlk olarak Digester a yazıldıkları sıra ile çağrılıp, tam tersi sırada sonlandırılırlar. İşleme Kuralları İşleme kurallarının amacı, örüntüler eşleştiğinde ne yapılacağını tanımlamakdır. İşleme kuralı, org.apache.commons.digester.rule arayüzünden türetilen bir java sınıfıdır. Her kural aşağıdaki olay metodlarından bir veya birkaçını gerçekleştirir.(implement) Begin() eşleşen XML öğesine rastlanıldığında çağırılır. Bu öğe ilgili özelliklerin tutulduğu bir veri yapısı da değiştirge olarak geçirilir. Body() eşleşen öğenin iç içe geçmiş içeriğine rastlanıldığında çağırılır. Ayrıştırma işleminin bir parçası olarak baştaki veya sondaki boşluk damgaları silinir. 7
8 End() eşleşen XML öğesinin sonuna gelindiğinde çağırılır. Eğer bu öğenin içerisinde (gövdesinde) eşleşen örüntüler varsa bu örüntülere dair kurallar işletilmişse, bu kural işletilmeden muhakkak hepsi sonlanmış olmalıdır. Finish() ayrıştırma işlemi bittiğinde her bir kurala geçici verilerini temizlemesi için bir şans vermek için cağırılır. Digester ınızı yapılandırırken kendiniz özel kurallar ekleyebilirsiniz. Bu düzenek uygulamaya özel olarak devingen biçimde kural gerçekleştirimleri yapmanızı sağlar. Bunlara ek olarak, genel ihtiyaçların karşılanması için bir çok kural sınıfı bizim için sağlanmıştır. Bu sınıflar aşağıdaki gibidir: ObjectCreateRule begin() metodu çağrıldığında bu kural belirtilen bir java sınıfının bir örneğini oluşturur ve yığıta koyar. Sınıf adı bu kuralın yaratıcı metoduna(constructor) değiştirge olarak geçirilir veya o an işlenmekte olan XML öğesinin bir özelliğine de yazılabilir. End() metodu çağrıldığında yığıtın üstündeki nesne(yüksek ihtimalle begin() metoduyla bizim eklediğimiz) silinir. FactoryCreateRule ObjectCreateRule un bir çeşit türevidir. Bu j-kuralla birlikte yaratılacak olan sınıfın hiçbir değiştirge almayan bir yaratıcı sınıfı yoksa, veya nesnenin Digester tarafından ele alınmasından önce yapılması gereken yapılandırmalar varsa bu kural kullanılır. SetPropertiesRule begin() metodu çağrıldığında digester JavaBeans özellik kurucu(setter) metodları belirlemek için standart Java Reflection API sini kulanır. Sık kullanılan, aynı öğe eşleştirme örüntüsüyle önce bir object create rule tanımlamak ve ardından set properties rule tanımlamaktır. SetNextRule end() metodu çağrıldığında, digester yığıtta en üsttekinin bir altındaki öğeyi belirli bir özellik için özellik kurucu metod açısından analiz eder. Daha sonra yığıtın en üstündeki öğeyi değiştirge olarak geçirerek bu metodu çağırır. Bu kural çoğunlukla iki nesne arasında bire-birçok bağıntı kurmak için kullanılır. ( addchild gibi bir metod ismiyle) SetTopRule end() metodu çağrıldığında, digester yığıtın en üstündeki öğeyi belirli bir özellik için özellik kurucu metod açısından analiz eder. Daha sonra yığıtın en üstünğn bir altındaki öğeyi değiştirge olarak geçirerek bu metodu çağırır. Bu kural SetNextRule un yerine, addparent kullanılarak bir alternatif teşkil eder. CallMethodRule Digeser yığıtının en üstündeki öğenin ismi verilen metodunun end() metodu çağrıldığında çağrılmsını sağlar. Bu kuralı çağrılacak metodun ismi, alacağı değiştirge miktarı ve metodun değiştirge türlerini tanımlamak için java sınıf isimleri ile yapılandırılabilir. CallParamRule bu kural CallMetodRule için belirli değiştirgelerin kaynağını tanımlar. Bu değiştirge değerini belirli bir değişkenden ya da iç içe geçmiş örüntünün içinden alabilir. NodeCreateRule ağacın bir kısmını DOM Node a çeviren ve yığıta yeniden koyan özelleşmiş bir kural. 8
9 Standart Rule sınıflarının örneklerini yaratabilir ve digester.addrule() metoduyla yazabiliriz(register). Ancak, kullanımları çok yoğun olduğu için digester sınıfı, standart kuralların yazılması için kısa bir yol öngörmüştür. Aşagıdaki kod bir örnek: Rule rule = new SetNextRule(digester, "addchild", "com.mycompany.mypackage.mychildclass"); digester.addrule("a/b/c", rule); aşağidakiyle yerdeğiştirebilir: digester.addsetnext("a/b/c", "addchild", "com.mycompany.mypackage.mychildclass"); Logging Logging, digester kural kümelerinde hata ayıklamak(debugging) için hayatsal bir araçtır. Digester, büyük boyutlarda hata ayıklama verisi loglayabilir. Bu yüzden, digester ı ciddi olarak kullanmaya başlamadan önce, loglamanın nasıl çalıştığını anlamalıyız. Digester Jakarta Commons Logging i kullanır. Bu bileşen istenilen şekilde ayarlanabilir. Çok temel loglamalar yapması için bir çok log verisini görmezden gelebilir. Daha geniş bilgi için commons-logging belgelerine göz atılabilir. Digester tarafından iki temel log kullanılır: SAX ile ilgili mesajlar org.apache.commons.digester.digester.sax kütüğünde loglanır. Bu log digester tarafından alınan temel SAX olayları hakkında bilgi verir. Diğer bütün herşey için org.apache.commons.digester.digester kullanılır. Hata ayıklama aşamasında bu loglama işlemini açık bırakmanız faydalı olacaktır. Commons-Logging in içerdiği SimpleLog gerçekleştirimini kullanmak istediğimizi, digester i Digester Logger ın DEBUG katmanında, Digerter.log un INFO katmanında olayları loglamak için ayarlamak istediğimizi farzedelim. Bunu bir commonslogging.properties kütüğü yaratarak halledebiliriz. Ancak aşağıdaki özellikleri taşıması gerekir: org.apache.commons.logging.log=org.apache.commons.logging.impl.simplelog org.apache.commons.logging.simplelog.log.org.apache.commons.di gester.digester=debug org.apache.commons.logging.simplelog.log.org.apache.commons.di gester.digester.sax=info 9
10 Kullanım Örnekleri Basit bir nesne ağacı yaratma Foo ve Bar adında iki basit JavaBean imiz olduğunu varsayalım. package mypackage; public class Foo { public void addbar(bar bar); public Bar findbar(int id); public Iterator getbars(); public String getname(); public void setname(string name); } public mypackage; public class Bar { public int getid(); public void setid(int id); public String gettitle(); public void settitle(string title); } Ve digester in aşağıdaki XML belgesini ayrıştırmasını(parse) istiyoruz. <foo name="the Parent"> <bar id="123" title="the First Child"/> <bar id="456" title="the Second Child"/> </foo> Aşagıdaki örnek ayrıştırma kuralları ve girdi kütüğü için örnek bir kullanım teşkil etmektedir: Digester digester = new Digester(); digester.setvalidating(false); digester.addobjectcreate("foo", "mypackage.foo"); digester.addsetproperties("foo"); digester.addobjectcreate("foo/bar", "mypackage.bar"); digester.addsetproperties("foo/bar"); digester.addsetnext("foo/bar", "addbar", "mypackage.bar"); Foo foo = (Foo) digester.parse(); Bu kurallar aşağıdaki işleri yapar: 1. en dıştaki <foo> öğesine rastlandığında, mypackage.foo nun yeni bir örneği yaratılır ve yığıta konur. <foo> öğesinin sonunda bu nesne yığıttan silinir. 2. yığıtın üstündeki elemanın(henüz yaratılan ve yığıta konulan Foo nesnesi) özellikleri o XML öğesinin özellikleri doğrultusunda kurulur. 10
11 3. içiçe geçmiş bir <bar> öğesine rastlanıldığında mypackage.bar ın yeni bir örneği yaratılarak yığıta konur. <bar> öğesinin sonunda bu nesne yığıttan silinir.(foo/bar ile eşleşen diğer kurallar işletildikten sonra) 4. yığıtın üstündeki elemanın(henüz yaratılan ve yığıta konulan Bar nesnesi) özellikleri o XML öğesinin özellikleri doğrultusunda kurulur. 5. yığıtın en üstündekinin bir altındaki öğenin addbar metodunun yığıtın en üstündeki öğe değiştirge olarak geçirilerek çağrılmasını sağlar. Bu öğe mypackage.bar türünden olmalı. Bu kural ata/oğul ilişkisinin kurulmasını sağlar. Ayrıştırma işlemi tamamlandığında, yığıta konulan ilk nesne(bu durumda Foo nesnesi) geri döndürülür. Bütün özellikleri kurulmuş ve bütün oğul Bar nesneleri sizin için yaratılmış olarak geri döner. Bir Struts yapılanış kütüğünün işlenmesi Birkaç eşleşme örüntüsünün ve işleme kuralının nasıl kullanıdığına bakalım. İlk olarak digester in nasıl yaratıldığı ve ilklendirildiğini inceleyelim: Digester digester = new Digester(); digester.push(this); // denetleyici servlet i yıgıta koy digester.setvalidating(true); Daha sonra denetleyici servlet, digester in kendi yığıtına eklenmeli. digester.addobjectcreate("struts-config/globalforwards/forward",forwardclass, "classname"); digester.addsetproperties("struts-config/globalforwards/forward"); digester.addsetnext("struts-config/global-forwards/forward", "addforward", "org.apache.struts.action.actionforward"); digester.addsetproperty ("struts-config/global-forwards/forward/setproperty","property", "value"); Bir <forward> öğesine rastlandığında aşağıdaki işlemler yapılır: ActionForward nesnesinin bir örneği yaratılır. Java sınıfının adı ilklendirme değiştirgesi olarak geçirilir. Yeni ActionForward nesnesi yığıta konur. <forward> öğesinin özelliklerine göre yığıtın en üstündeki ActionForward nesnesinin özellikleri kurulur. İçiçe geçmiş <set-property> öğelerine rastlanması ek özellik kurucu metodların (setter) çağırılmasına sebep olur. Yığıtın en üsttekinin altındaki nesnenin(denetleyici servlet) addforward() metodu, yığıtın en üstündeki nesne(actionforward nesnesi) değiştirge geçirilerek çağırılır. <forward> öğesinin sonunda, son öğe(actionforward nesnesi) yığıttan silinir. Daha sonra, digester şu şekilde çalıştırılır: 11
12 InputStream input = getservletcontext().getresourceasstream(config);... try { digester.parse(input); input.close(); } catch (SAXException e) {... sorunla ilgilen... } XML belgelerinde gövde metninin ayrıştırılması Digester birimi, XML kütüklerindeki içiçe geçmiş gövde metinlerinin işlenmesini de sağlar. Aşağıdaki örnek bir web uygulamasının deployment descriptor(/web-inf/web.xml) ının ayrıştırılmasını gösteriyor. Bunun için aşağıdaki metodlara sahip bir bean sınıfının olduğunu farzedelim. package com.mycompany; public class ServletBean { public void setservletname(string servletname); public void setservletclass(string servletclass); public void addinitparam(string name, String value); } İşleyeceğimiz XML belgesi aşağıdaki gibi olacaktır: <web-app>... <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.actionservlet<servlet-class> <init-param> <param-name>application</param-name> <param-value>org.apache.struts.example.applicationresources<param-value> </init-param> <init-param> <param-name>config</param-name> <param-value>/web-inf/struts-config.xml<param-value> </init-param> </servlet>... </web-app> Şimdi bu girdi kütüğü için birkaç digester işleme kuralı tanımlayalım: digester.addobjectcreate("web-app/servlet", "com.mycompany.servletbean"); digester.addcallmethod("web-app/servlet/servlet-name", "setservletname", 0); digester.addcallmethod("web-app/servlet/servlet-class", "setservletclass", 0); digester.addcallmethod("web-app/servlet/init-param", "addinitparam", 2); 12
13 digester.addcallparam("web-app/servlet/init-param/param-name", 0); digester.addcallparam("web-app/servlet/init-param/paramvalue", 1); Öğeler ayrıştırıldıkça, aşağıdaki işlemler gerçekleştirilecek: <servlet> - yeni bir com.mycompany.servletbean yaratılır ve yığıta konur. <servlet-name> - yığıtın en üstündeki elemanın setservletname() metodu tek değiştirge olarak bu öğenin gövde içeriği geçirilerek çağrılır. <servlet-class> - yığıtın en üstündeki elemanın setservletclass () metodu tek değiştirge olarak bu öğenin gövde içeriği geçirilerek çağrılır. <init-param> - yığıtın en üstündeki nesnenin addinitparam() metodunun çağrılması için bir hazırlık yapılır ancak çağırılmaz. Çünkü çağırılması için daha sonra alacağımız iki değiştirge gereklidir. <param-name> - cağırmak için hazırlık yaptığımız metodun ilk değiştirgesi. <param-name> - cağırmak için hazırlık yaptığımız metodun ikinci değiştirgesi. </init-param> - hazırlığını yaptığımız addinitparam() metodunun işletilmesini sağlar. Bean e yeni bir isim-değer ikilisinin kaydedilmesini sağlar. <init-param> - aynı işletim kurallarının tekrar çalıştırılmasını sağlar. </servlet> - yığıtın en üstündeki eleman(daha önce koyduğumuz ServletBean) silinir. Kaynakça
Üst Düzey Programlama
Üst Düzey Programlama XML 1 XML XML (Extensible Markup Language) verileri belirli yapıda tutmak için kullanılan bir işaretleme dilidir. Bu yapı bilindiği için verinin istenildiğinde kullanılmasını, değiştirilmesini
DetaylıÜst Düzey Programlama
Üst Düzey Programlama Struts Framework Üst Düzey Programlama-ders08/ 1 JSP MODEL 1 ve MODEL 2 Mimarileri Bu mimariler bir web uygulaması geliştirilirken kullanılan yöntemlerdir. Bu yöntemler arasındaki
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor
DetaylıYZM 2105 Nesneye Yönelik Programlama
YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 5 Nesneye Yönelik Programlamaya Giriş Bu
DetaylıHSancak Nesne Tabanlı Programlama I Ders Notları
METOTLAR Nesneye yönelik programlama dillerinde genellikle fonksiyonlar metot olarak isimlendirilirler. Metot ve fonksiyon olarak ifade edilecek kavramlar aynı anlamda kullanılacaktır. Her çalışan C# programı
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;
DetaylıÖnemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance
Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance public class Test { // çalışır İnsan insan = new Çiçekçi();
DetaylıBölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1
Bölüm 11 Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 11. Bölüm konuları Soyutlama kavramı Veri soyutlamasına giriş Soyut veri tipleri için tasarım konuları Dil örnekleri Parametreli
DetaylıSunum İçeriği. Programlamaya Giriş 22.03.2011
Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon
DetaylıC++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 10: Yapıcı ve Yıkıcı Fonksiyonlar Yapıcı Fonksiyonlar İçerik Yapıcı Fonksiyon Tanımı Üyelere İlk Atama Yapıcı Fonksiyonu Yükleme Yapıcı Fonksiyon Çağırımı Kopya
DetaylıClient Server Database
Java Server Faces Ahmet Demirelli Sabancı Üniversitesi 2007 Ajanda Model-1 Mimari Model-2 Mimari MVC Framework Java Server Faces Örnek Uygulama Model 1 Mimari 1 2 3 6 JSP (View) 5 JavaBeans (Model) 4 Client
DetaylıİNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ
İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ AD SOYAD: TESLİM TARİHİ: OKUL NO: TESLİM SÜRESİ: 2 hafta ÖDEV NO: 5 1- BANKA
DetaylıBTEP243 Ders 3. class Yazım Kuralı:
BTEP243 Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin
DetaylıBİL-141 Bilgisayar Programlama I (Java)
1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,
DetaylıMAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş
MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101
DetaylıVeritabanı Tasarımı. Düzenli İfadeler
Veritabanı Tasarımı Düzenli İfadeler Konular Düzenli ifadeleri tanımlama SQL ifadelerinde düzenli ifadeleri arama, eşleme ve yer değiştirme katarlarında kullanma Düzenli ifadeleri ve kontrol kısıtlamalarını
DetaylıJavaScript & DOM XML & JSON
JavaScript & DOM XML & JSON Ele alınacak başlıklar JavaScript Dili DOM (Document Object Model) JavaScript ve OO Programlama XML ve JSON JavaScript Kısım 1 Gelişim JavaScript, 1995 yılında Netscape tarafından
Detaylıhttps://twitter.com/farukbozan 19 Şubat 2016 Cuma
Bugünkü yazımda çok basit ve temel anlamda Spring ile XML tanım tabanlı bean okuma işlemini anlatmaya çalışacağım. Spring framework bizim yerimize nesnelerin birbirine olan bağımlılıklarını düzenleyip,
DetaylıNesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.
Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir
DetaylıPROGRAMLAMAYA GİRİŞ FONKSİYONLAR
PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya
DetaylıYZM 2105 Nesneye Yönelik Programlama
YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 7 Abstract (Soyut Sınıflar) Bu bölümde;
DetaylıÜst Düzey Programlama
Üst Düzey Programlama Yazılımda Günlükleme (Logging) Üst Düzey Programlama-ders07/ 1 Günlükleme -Logging Tüm büyük çaplı uygulamalarda günlükleme(logging) ihtiyaçları bulunmaktadır. Bir uygulamanın hata
DetaylıÜst Düzey Programlama
Üst Düzey Programlama Servlet Üst Düzey Programlama-ders01/ 1 Servlet Nedir? Web sayfaları ilk başlarda durağan bir yapıya sahipti ve kullanıcıdan bilgi alarak işlemler yapmıyordu. Zamanın geçmesiyle kullanıcıya
DetaylıGörsel Programlama DERS 03. Görsel Programlama - Ders03/ 1
Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit
Detaylı/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/
Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void
DetaylıBTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9
BTP 207 İNTERNET PROGRAMCILIĞI I Ders 9 Dizi Değişkenler (Array) 2 Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1, eleman2,, elemann)
DetaylıJava EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür.
1 Apache Struts Java EE web uygulamaları geliştirmek için kullanılan açık kaynak web uygulama framework üdür. Kullanıcılara MVC mimarisini benimsetmek için Java Servlet API sini kullanıyor. Model-View-Controller
DetaylıBLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi SERVİS BİLEŞENLERİ. BLM401 Dr.Refik SAMET
BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi SERVİS BİLEŞENLERİ 1 GİRİŞ (1/5) Servisler arka planda görev yapan görsel olmayan Android bileşenleridir. Ekranda herhangi bir aktivite görünürken arka
Detaylı// hataları işaret eden referans
System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin
DetaylıYığıtın en üstündeki öğeyi değer olarak alır; ama onu yığıttan almaz, yerinde bırakır.
Stack Sınıfı (yığıt) java.util Class Stack java.lang.object java.util.abstractcollection java.util.abstractlist java.util.vector java.util.stack Stack (yığıt) sınıfı nesnelerin LIFO (last-input-first-output)
DetaylıMVC Kul anıcı Doğrulama ve Yetkilendirme MVC Filtreler Action Filter FilterAttribute IActionFilter FilterAttribute IActionFilter
MVC Kullanıcı Doğrulama ve Yetkilendirme MVC projesinde kullanıcıların oturum açmasının sağlanması ve sadece yetkili oldukları action metotlara erişebilmelerini anlatan bir örnek uygulama gerçekleştirilecektir.
DetaylıCahit GÜNGÖR Hacettepe Üniversitesi Bilişim Enstitüsü. Sorumluluk Zinciri. Kod Üretme (Code Generation)
Cahit GÜNGÖR Hacettepe Üniversitesi Bilişim Enstitüsü Sorumluluk Zinciri (Chain of Responsibility) Yazılım Mimarileri Kod Üretme (Code Generation) Anahatlar Tanım Örüntünün Amacı Ne zaman Gerçekleştiririz?
DetaylıGöstericiler (Pointers)
C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi
DetaylıC++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 14: Çoklu İşlev İçerik Çoklu İşlevin Gerçekleştirilmesi Saf Sanal Fonksiyonlar ve Soyut Sınıflar Sanal Yıkıcı Fonksiyonlar Statik ve Dinamik Bağlama 2 Çoklu İşlev
DetaylıBİLGİSAYAR PROGRAMLARININ TASARIMLARINDAKİ VE KODLARINDAKİ SORUNLARIN BELİRLENMESİ ALPER FİLİZ MEHMET ALİ SERT
BİLGİSAYAR PROGRAMLARININ TASARIMLARINDAKİ VE KODLARINDAKİ SORUNLARIN BELİRLENMESİ ALPER FİLİZ 040080202 MEHMET ALİ SERT 040090521 SUNUM İÇERİĞİ Problem Tanımı Tespit Edilen Sorunlar Problemin Sonuçları
DetaylıKılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap
Map Arayu zu java.util Interface Map Altarayüzleri: SortedMap Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap Map, Java Collections
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni
DetaylıYZM 2116 Veri Yapıları
YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 4 Stack (Yığın, Yığıt) Veri Yapısı Stack Çalışma
DetaylıGörsel Programlama DERS 12. Görsel Programlama - Ders12/
Görsel Programlama DERS 12 1 Java Ağ İşlemleri (Java Networking) Birbirleri ile ağ araçları ve kabloları ile bağlantılı bilgisayarlar bir ağ sistemi oluştururlar. İnternet, şirketlerin yerel bilgisayar
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,
Detaylı5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi
5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını
DetaylıANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kalıtım Kavramı Java da Çok Biçimlilik Kavramı Fonksiyonların Çok Biçimliliği Yapıcı Fonksiyonun Çok Biçimliliği Java da Kalıtım Kavramı 4 Kalıtım;
DetaylıJava Programlamada Paket Yapısı Ve Import
Java programlamada paket yapısı ve import Java Programlamada Paket yapısı ve Java programları paketlerden oluşmaktadır. Paketlerin içinde sınıflar ve arayüzler bulunur. İstenirse var olan paketlerden başka
DetaylıNESNEYE YÖNELİK PROGRAMLAMA
NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem
DetaylıNESNEYE YÖNELİK TASARIM SÜRECİ
NESNEYE YÖNELİK TASARIM SÜRECİ GİRİŞ Nasıl? sorusuna yanıt aranır. Nesne modeli: Analizden tasarıma. Doğrudan problem alanı ile ilgili nesnelerden oluşan model, yardımcı nesnelerle zenginleştirilir. Ana
DetaylıGörsel Programlama DERS 04. Görsel Programlama - Ders04/ 1
Görsel Programlama DERS 04 Görsel Programlama - Ders04/ 1 Diziler ve Kolleksiyonlar(Collections) Diziler aynı tipli değişkenleri tutmak için kullanılan veri yapılarıdır. Diziler sabit uzunlukludur. Birkez
DetaylıArş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015
Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 KONU BAŞLIKLARI 1. Yazılım Mimarisi nedir? 2. Yazılımda Karmaşıklık 3. Üç Katmanlı Mimari nedir? 4. Üç Katmanlı Mimari
DetaylıÜst Düzey Programlama
Üst Düzey Programlama JSP Üst Düzey Programlama-ders04/ 1 JSP JSP durağan HTML ile dinamik oluşturulan içeriği birleştirmeyi sağlar. Bir web sayfası tasarlama programı ile web sayfasını tasarlar daha sonra
DetaylıBLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA
BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı
DetaylıJava Class Yapısında Finalize Metotunun Kullanımı
Java'da finalize() Metodu: Java dili kullanılmayan nesneleri silmek için arka planda çalışan bir sisteme sahiptir. Bu yüzden C++ gibi dillerde dinamik nesne tanımlarında mutlaka yer alması gereken nesneyi
DetaylıMOBİL UYGULAMA GELİŞTİRME
MOBİL UYGULAMA GELİŞTİRME Hedefler Bu üniteyi çalıştıktan sonra; Android projesi oluşturabilir, Android projesini çalıştırabilir, Android projesi genel yapısını açıklayabilir, Activity kavramını açıklayabilir,
DetaylıFonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {
Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel
DetaylıBalon & Banka Teslim tarihi: 17 Kasım 2008
Balon & Banka Ege Üniversitesi Bilgisayar Mühendisliği Veri Yapıları Proje-2 Hüseyin YAŞAR 05-06-7657 Didem KAYALI 05-06-7669 Umut BENZER 05-06-7670 http://www.ubenzer.com/ Özlem GÜRSES 05-07-8496 Teslim
DetaylıYAZILIM ÜRÜN HATTI DEĞĐŞKENLĐĞĐNĐN DENETĐM ÇEVRĐMĐ ĐLE ELE ALINMASI
YAZILIM ÜRÜN HATTI DEĞĐŞKENLĐĞĐNĐN DENETĐM ÇEVRĐMĐ ĐLE ELE ALINMASI Emra AŞKAROĞLU ASELSAN A. Ş. 1 ĐÇERĐK Yazılım Ürün Hattı nedir? Yazılım Ürün Hattı Değişkenliği Ürün Özellik Ağacı Oluşturma Uygulama
DetaylıÜst Düzey Programlama
Üst Düzey Programlama JSP Etiketletleri(Tags) Üst Düzey Programlama-ders06/ 1 Kişiye Özel JSP Etiketleri JSP Etiketleri, JSP sayfasında yazılan Java script leri yerine kullanılabilen HTML etiketleri yapısına
DetaylıFIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜH.
FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜH. WSDL-SOAP MURAT TEZGİDER Web Servisi Nedir? web servisi :standart formatları kullanarak programlama dili, işletim sistemi ve platformdan bağımsız olarak bilgiyi paylaşan
DetaylıSpring Framework Eğitimi
Hazırlayan: Barış Dere www.barisdere.com @BarisDere baris.dere@gmail.com Spring Framework Eğitimi Ders 3: Http://www.youtube.com/barisdere Ders içeriği Scope nedir Singleton scope Prototype scope Web scopes
DetaylıNESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM
NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM 2014) //Class (Sınıf) // Sınıf (class) soyut veri tipidir. // Nesne (object) sınıfın somutlaşan bir cismidir. // static : nesnesi oluşturulmaz.
DetaylıSİSTEM VE YAZILIM. o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur.
SİSTEM VE YAZILIM o Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur. o Yazılım, bilgisayar sistemlerinin bir bileşeni olarak ele alınmalıdır. o Yazılım yalnızca
DetaylıBütün XML dökümanlarının bir kök elemanı olmalıdır. Diğer bütün elemanlar kök elemanı tarafından kapsanır.
XML Genişletilebilir İşaretleme Dili (extensible Markup Language), hem insanlar hem bilgi işlem sistemleri tarafından kolayca okunabilecek dokümanlar oluşturmayı sağlamaktadır W3C tarafından tanımlanmış
DetaylıBİL-142 Bilgisayar Programlama II
BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri
DetaylıKablosuz Algılayıcı Ağları İçin TinyOS İle Uygulama Geliştirme
Kablosuz Algılayıcı Ağları İçin TinyOS İle Uygulama Geliştirme Kasım Sinan YILDIRIM AKADEMİK BİLİŞİM 2010 10-12 Şubat 2010 Muğla Üniversitesi, Muğla Ege Üniversitesi Bilgisayar Mühendisliği Bölümü İzmir,
DetaylıÜst Düzey Programlama
Üst Düzey Programlama Servlet 1 Çerez (Cookie) Cookie'ler servletlerden kullanıcının bilgisayarında istekte bulunduğu web tarayıcısına ( anahtar=kelime ) şeklinde bilgi göndermemiz için kullanılan yapılardır.
DetaylıDers 8 Konu Özeti ve Problemler
Ders 8 Konu Özeti ve Problemler C# ve Nesne Yönelimli Programlamanın 3 Prensibi Kapsülleme (Encapsulation) Nesne yönelimli programlamanın ilk prensibi kapsülleme (encapsulation) olarak adlandırılır. Bu
DetaylıÜst Düzey Programlama
Üst Düzey Programlama Servlet Üst Düzey Programlama-ders02/ 1 Form ve kullanıcı verilerinin alınması http://anamakine/yol?kullanici=mustafa&sayfa=22 gibi bir istek ile karşılaşmışızdır.? işaretinden sonra
DetaylıHSancak Nesne Tabanlı Programlama I Ders Notları
DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar
Detaylı(Sözlük, dictionary, birleşik array, map)
14 hash (Sözlük, dictionary, birleşik array, map) 14.1 Hash Sınıfı Array ambarı, içindekileri tamsayılarla (index) damgalayıp sıralayan harika bir yapıdır. Ama bazı durumlarda indis ya yoktur ya da kullanılması
DetaylıJava da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )
Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts
DetaylıLambda İfadeleri (Lambda Expressions)
Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki
DetaylıBölüm 9. Altprogramlar ISBN 0-321-49362-1
Bölüm 9 Altprogramlar ISBN 0-321-49362-1 9. Bölüm konuları Giriş Altprogram temelleri Yerel atıf ortamları (local referencing environments) Parametre geçme yöntemleri Altprogram olan parametreler Çok anlamlı
DetaylıC++ Dersi: Nesne Tabanlı Programlama 2. Baskı
C++ Dersi: Nesne Tabanlı Programlama 2. Baskı ³ Bölüm 19: Standart Şablon Kütüphanesi (vector) İçerik 19.1 Standart Şablon Kütüphanesi (STL) 19.2 vector SınıK 19.3 vectortanımı 19.4 vector Elemanlarına
DetaylıBİH 605 Bilgi Teknolojisi Bahar Dönemi 2015
BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015 Ders- 13 World Wide Web (WWW) Yrd. Doç. Dr. Burcu Can Buğlalılar Bilgisayar Mühendisliği Bölümü Bilgisayar Katmanları İçerik World Wide Web (WWW) Anlık Mesajlaşma
DetaylıNESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 8. Yrd.Doç.Dr.Hacer Karacan
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 8 Yrd.Doç.Dr.Hacer Karacan İçerik İstisna Yönetimi (Exception Handling) İstisna Nedir? İstisna Yakalama Mekanizması İstisna İşleme Modeli İstisnaların Listesi İstisna
DetaylıMobil Cihazlardan Web Servis Sunumu
Mobil Cihazlardan Web Servis Sunumu Özlem Özgöbek Ege Üniversitesi Bilgisayar Mühendisliği Bölümü 2010 İnternet erişiminin yaygınlaşması ve artık mobil cihazlar üzerinden bile yüksek hızlı veri iletişimine
DetaylıBİL132 Bilgisayar Programlama II
BİL132 Bilgisayar Programlama II 8. Olağandışı durumlar (exceptions) Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü Yüksel Tarhan Olağandışı durum Kütük bulunamadı Diskte yer kalmadı Nesne referans
DetaylıBMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1
BMT 101 Algoritma ve Programlama I 11. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Fonksiyonlar Yük. Müh. Köksal Gündoğdu 2 C++ Hazır Fonksiyonlar Yük. Müh. Köksal Gündoğdu 3 C++ Hazır Fonksiyonlar 1. Matematiksel
DetaylıDinamik Kodlama. [X] Fusion@6. [X] Yeni Fonksiyon
Dinamik Kodlama Ürün Grubu Kategori Versiyon Önkoşulu [X] Fusion@6 [X] Yeni Fonksiyon @6 Uygulama @6 Serisi ürünlerde, kullanıcı arabirimlerinin her yerine eklenen dinamik kodlama özelliği ile, programın
DetaylıBİL-141 Bilgisayar Programlama I (Java)
1 BİL-141 Bilgisayar Programlama I (Java) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Bilgisayar Programlamaya Giriş, A. Yazıcı, E. Doğdu,
DetaylıNesneler için torbalar (Collections) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 1
Nesneler için torbalar (Collections) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 12 1 NESNELER İÇİN TORBALAR Torbalar birden çok nesneyi aynı çatı altında toplamak için kullanılır. Bunun faydası
DetaylıBölüm 9. Altprogramlar ISBN
Bölüm 9 Altprogramlar ISBN 0-321-49362-1 Giriş Bu bölümde, programlarda sıkça kullanılan işlemlerin bir araya gruplanması ile oluşturulan altprogramlar incelenecektir. Altprogramlar sayesinde bir programda
DetaylıAlgoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi
Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri Veri modelleri, veriler arasında ilişkisel ve sırasal düzeni gösteren kavramsal tanımlardır. Her program en azından bir veri modeline dayanır. Uygun
DetaylıC# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ
C# Yazım Kuralları 1 İçindekiler C# Yazım Kuralları Veritipleri Değişkenler Operatörler Sınıflar Nesneler, Özellik, Metot ve Olay Bileşenler 2 C# yazım kuralları Deyimlerde büyük küçük harf yazıma uyulmalı
DetaylıC# nedir,.net Framework nedir?
1 C# nedir,.net Framework nedir? C# nedir? C#, C/C++ ve Java dillerinde türetilmiş,bu dillerin dezavantajlarının elenip iyi yönlerinin alındığı, güçlü basit, esnek, tip-güvenli(typesafe,tür dönüşümlerindeki
DetaylıNesne Tabanlı Programlama
Nesne Tabanlı Programlama Ders Notu - 3 Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Sınıflar ve Fonksiyonlar Tekrar kullanılabilir kodlar 1 Nesne Tabanlı Tasarım
DetaylıKUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR
KUYRUKLAR QUEUES Doç. Dr. Aybars UĞUR Giriş Bu bölümde gerçek yaşamdaki kuyrukların bilgisayardaki gösterimleri üzerinde durulacaktır. Kuyruklar, eleman eklemelerin sondan (rear) ve eleman çıkarmaların
DetaylıAlgoritmalar. Heap Sort. Bahar 2017 Doç. Dr. Suat Özdemir 1
Algoritmalar Heap Sort Bahar 2017 Doç. Dr. Suat Özdemir 1 Heap Sort Heap Sort algoritması Merge Sort ve Insertion Sort algoritmalarının iyi özelliklerini bir arada toplar. Algoritma Insertion Sort gibi
DetaylıC++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 13: Miras İçerik Miras Kavramı Miras Yönteminin Uygulanması Erişim Etiketleri: public, private, protected Miras ve Yapıcı Fonksiyonlar Üst Sınıf Tanımlamasında
DetaylıYazılım Kodlama ve İ simlendirme Standartları v1.0
Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.
DetaylıJavaServer Faces (JSF) Sunucu Yazılım Teknolojileri 2008
JavaServer Faces (JSF) Sunucu Yazılım Teknolojileri 2008 JSF Nedir? Yeni nesil Web uygulama anaçatısıdır. Bileşen modeline dayanır: UI Bileşenleri Olay tabanlı etkileşim modeli Geliştiriciler tarafından
DetaylıJAVA API v2.0 Belge sürümü: 2.0.2
JAVA API v2.0 Belge sürümü: 2.0.2 1. İçindekiler 1. İÇİNDEKİLER... 2 2. BU BELGENİN AMACI... 3 3. BELGE SÜRÜMLERİ... 3 4. SİSTEM GEREKSİNİMLERİ... 3 5. KULLANIM ŞEKLİ... 4 5.1. GENEL... 4 5.2. UYARILAR...
Detaylıpublic static int Toplam int x, int y
static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.
Detaylıabstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;
abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance
DetaylıÜst Düzey Programlama
Üst Düzey Programlama JDBC (Java Database Connectivity) Üst Düzey Programlama-ders07/ 1 JDBC JDBC ilişkisel veritabanlarına erişim için Java dilinde kullanılan standart bir kütüphanedir. Bu kütüphanedeki
Detaylı8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr
8. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II Öğr.Gör. Hakan YILMAZ hakanyilmaz@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi 2 İçindekiler QUERYSTRING KOLEKSIYONU... 3 FORM
DetaylıBLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)
1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.
DetaylıBölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16
Bölüm 8. Ayrık Küme Olcay Taner Yıldız 2014 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 1 / 16 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi
DetaylıJava C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.
Ders İçeriği An introduction to Object-oriented programming with Java Third Edition Update Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır. Nesneye Yönelik Öğr.
DetaylıPAKET TRANSFER SİSTEMİ
İLAÇ TAKİP SİSTEMİ ŞUBE MÜDÜRLÜĞÜ PAKET TRANSFER SİSTEMİ Kullanıcı Dökümanı Version 1.0 1 1. Revizyonlar... 1 2. Giriş... 1 2.1 Kapsam... 1 2.2 Hedef Kitle... 1 3. Gereksinimler... 1 3.1 Yazılım Gereksinimleri...
DetaylıTARİHÇE. Versiyon Tarih Düzenleyen Açıklama 0.1 04.11.2015 Engin DURMAZ İlk versiyon
İçindekiler 1 GİRİŞ... 2 2 KOD ÖRNEKLERİ... 3 2.1 AÇILIŞTA YAPILMASI GEREKENLER... 3 2.2 ÖKC-HARİCİ CİHAZ EŞLEŞMESİ... 3 2.3 MALİ REFERANS İSTEĞİ... 4 2.4 PROGRAMLAMA BİLGİLERİNİN GÖNDERİLMESİ... 5 2.5
DetaylıBTP208 İnternet Programcılığı II XML ve XML Uygulamaları. (2. Kısım)
BTP208 İnternet Programcılığı II XML ve XML Uygulamaları (2. Kısım) Hazırlayan Öğr. Gör. Özgür ÖZŞEN İçerik XML DTD Belge Tipi Tanımlamaları 1 Karakter Veri Bir elemanın başlangıç ve bitiş etiketi içindeki
Detaylı