<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yusuf Aytaş</title>
	<atom:link href="http://www.yusufaytas.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yusufaytas.com</link>
	<description>Yazılım Çözümleri</description>
	<lastBuildDate>Mon, 12 Mar 2012 15:13:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Çevik Yazılım</title>
		<link>http://www.yusufaytas.com/cevik-yazilim/</link>
		<comments>http://www.yusufaytas.com/cevik-yazilim/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 13:16:14 +0000</pubDate>
		<dc:creator>Yusuf Aytaş</dc:creator>
				<category><![CDATA[Bilişim Dünyası]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[1974]]></category>
		<category><![CDATA[Abstraction]]></category>
		<category><![CDATA[adaptive planning]]></category>
		<category><![CDATA[adaptive software development process]]></category>
		<category><![CDATA[Agile Adoption]]></category>
		<category><![CDATA[Agile Manifesto]]></category>
		<category><![CDATA[agile process]]></category>
		<category><![CDATA[Agile software development]]></category>
		<category><![CDATA[Agility]]></category>
		<category><![CDATA[ana felsefe]]></category>
		<category><![CDATA[aşamalı ilerleme]]></category>
		<category><![CDATA[çabuk yazılım]]></category>
		<category><![CDATA[Çevik yazılım]]></category>
		<category><![CDATA[çevik yazılım uygulanışı]]></category>
		<category><![CDATA[changing requirements]]></category>
		<category><![CDATA[Customer collaboration]]></category>
		<category><![CDATA[değişen gereksinimler]]></category>
		<category><![CDATA[dinginlik]]></category>
		<category><![CDATA[domain expert]]></category>
		<category><![CDATA[E. A. Edmonds]]></category>
		<category><![CDATA[evolutionary development]]></category>
		<category><![CDATA[evrimsel süreç]]></category>
		<category><![CDATA[farkındalık]]></category>
		<category><![CDATA[incremental]]></category>
		<category><![CDATA[Individuals and interactions]]></category>
		<category><![CDATA[iterative and incremental development]]></category>
		<category><![CDATA[iterative planning]]></category>
		<category><![CDATA[kodlama]]></category>
		<category><![CDATA[kolay yazılım]]></category>
		<category><![CDATA[önemli unsurlar]]></category>
		<category><![CDATA[Responding to change]]></category>
		<category><![CDATA[safha]]></category>
		<category><![CDATA[takım çalışması]]></category>
		<category><![CDATA[tasarım]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[Working software]]></category>
		<category><![CDATA[yazılım ekibi]]></category>
		<category><![CDATA[yazılım geliştirme yöntemi]]></category>
		<category><![CDATA[yazılım yöntemi]]></category>

		<guid isPermaLink="false">http://www.yusufaytas.com/?p=1712</guid>
		<description><![CDATA[Çevik yazılım geliştirme, bir takım yazılım geliştirme yönteminden ibarettir. Bu yöntemler, yazılımın ve gereksinimlerin biri biriyle etkileşim halinde tutarak ortaya koyulmuş süreçlerin tekrarlanmasına ve aşamalı bir şekilde ilerlemeye dayanır. Yöntemlerin uygulanmasında, zamana dayalı ilerleme, evrimsel geliştirme ve teslim süreci ve değişime karşı esnek yapı ön plana çıkar. 2001 yılında yayımlanan Agile Manifesto, yöntemlerin temelini oluşturan [...]]]></description>
			<content:encoded><![CDATA[<p>Çevik yazılım geliştirme, bir takım yazılım geliştirme yönteminden ibarettir. Bu yöntemler, yazılımın ve gereksinimlerin biri biriyle etkileşim halinde tutarak ortaya koyulmuş süreçlerin tekrarlanmasına ve aşamalı bir şekilde ilerlemeye dayanır. Yöntemlerin uygulanmasında, zamana dayalı ilerleme, evrimsel geliştirme ve teslim süreci ve değişime karşı esnek yapı ön plana çıkar. 2001 yılında yayımlanan <a href="http://agilemanifesto.org/">Agile Manifesto</a>, yöntemlerin temelini oluşturan belgedir. Yazımın devamında, çevik yazılımı doğuran süreç ve çevik yazılım geliştirme  üzerinde duracağım.</p>
<p>Aşamalı ilerleme yöntemleri çok eskiye dayanmakmaktadır. Aslında çoğu mühendislik biliminde de karşımıza çıkan bir uygulamadır. Ama, yazılım dünyasında çevik diyebileceğimiz algı, 1974 yılında E. A. Edmonds tarafından yayımlanan  uyarlanabilir yazılım geliştirme süreci (adaptive software development process) adlı  makaleye dayanmaktadır. Fakat, çevik yazılımı ortaya çıkmasındaki en büyük etken, klasik mühendislik yöntemlerinin bilgisayar biliminde yeterli olmamasıydı.  Klasik mühendislik methodları, ürünün her bir parçasının geliştirme sürecine girmeden önce tek tek ele alınıp tasarımı yapılıp sonrada üretim bandına sokulmasını öngürür. Halbuki, yazılım dünyasında ürün her an değişebilir nitelikte olmalıdır. Bu durum,  daha dinamik bir yöntem olan çevik yazılım geliştirme kavramını ortaya çıkardı.</p>
<p>Çevik yazılım geliştirme klasik anlayıştan vazgeçerek,   değişime her zaman  ayak uydurmaya dayanan bir anlayış. Çevik yazılım, projenin safhalara bölünerek, her safhada çalışan bir ürün elde etmeyi hedefler. Her bir safha kendine özgü tasarım, kodlama ve test etme faaliyetlerinden oluşur. Safhanın bitiminde elde edilen ürün, varolan gereksinimleri karşılayamıyor yada gereksinimleri değiştiyse bir sonraki safhada düzeltilir. Yeni safhada müşeteri ile müzakere edilerek, safhanın planı yapılır. Ürün tamamlanana kadar bu döngüye devam edilir. Çevik yazılımın etkin bir şekilde uygulanması için aşağıda anlattığımız bir kaç unsurun uygulanması önem taşımaktadır.</p>
<p>İhtiyaçların anlaşılması ve değişikliklerin iyi yorumlanması için müşteri yada çalışma alanında uzman biri(domain expert) ile birlikte çalışılması en önemli unsurlardan biridir. Çünkü, gerekli bilgilerin en doğru ve hızlı aktarımı gereksinimlerin birinci ağızdan duyulmasına bağlıdır. Bu yapılmadığında yazılımcılar kendi anladıklarını hayata geçirerek, bir sonraki safhada geliştirilen ürünü fazlaca değiştirmeye hatta sil baştan yapmaya  sebep olabilir. Dolayısıyla, çevik yazılımda müşteri de yazılım ekibinin bir parçası olmalıdır.</p>
<p>Çevik yazılımda önemli olduğuna inandığım bir diğer unsur takım çalışmasıdır. Projedeki her bir birey, projenin ne doğrultuda olduğunu ve kendisinin ne yaptığını  iyi anlaması gerekir çünkü ekipteki her elamanın farkındalığı ve dinginliği proje için önemlidir.  Ayrıca, proje ekibinde  elemanlar arasındaki farklar gözetilmelidir. Aksi takdirde, yapılan işlerde gecikmeler yada erken bitirme durumları ortaya çıkabilir. Önemli olan görevleri  ekipçe zamanında bitirmektir.</p>
<p>Çevik yazılım, adından da anlaşılabileceği gibi kolay ve çabuk bir şekilde yeni gelen yada değiştirilen gereksinimlere ayak uydurmaktır.  Varolan mühendislik yöntemlerinin, yazılım sektörü için uygun olmayışından ortaya çıkan bir yöntemdir. Ana felsefesi, yazılım sürecinin safhalara bölünerek, her bir safhada çalışan bir ürün elde etmektir. Bu felsefeyi uygularken, takım çalışması ve müşteri etkinliği dikkat edilmesi gereken unsurlardır. Sonuç olarak çevik yazılım, gereksinimlerin sürekli değiştiği yazılım dünyası için güzel bir yaklaşımdır.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yusufaytas.com/cevik-yazilim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Red Hot Chili Peppers</title>
		<link>http://www.yusufaytas.com/red-hot-chili-peppers/</link>
		<comments>http://www.yusufaytas.com/red-hot-chili-peppers/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 08:55:37 +0000</pubDate>
		<dc:creator>Yusuf Aytaş</dc:creator>
				<category><![CDATA[Kategorisiz]]></category>
		<category><![CDATA[Aeroplane]]></category>
		<category><![CDATA[Anthony Kiedis]]></category>
		<category><![CDATA[best songs of Red Hot Chili Peppers]]></category>
		<category><![CDATA[Blood Sugar Sex Magik (1991)]]></category>
		<category><![CDATA[By the Way]]></category>
		<category><![CDATA[By the Way (2002)]]></category>
		<category><![CDATA[Californication]]></category>
		<category><![CDATA[Californication (1999)]]></category>
		<category><![CDATA[Can't Stop]]></category>
		<category><![CDATA[Chad Smith]]></category>
		<category><![CDATA[Dani California]]></category>
		<category><![CDATA[Dont Forget Me]]></category>
		<category><![CDATA[Easily]]></category>
		<category><![CDATA[Especially In Michigan]]></category>
		<category><![CDATA[Factory Of Faith]]></category>
		<category><![CDATA[Flea]]></category>
		<category><![CDATA[Freaky Styley (1985)]]></category>
		<category><![CDATA[Give It Away]]></category>
		<category><![CDATA[Happiness Loves Company]]></category>
		<category><![CDATA[Higher Ground]]></category>
		<category><![CDATA[Hillel Slovak]]></category>
		<category><![CDATA[I Could Die For You]]></category>
		<category><![CDATA[I'm with You (2011)]]></category>
		<category><![CDATA[John Frusciante]]></category>
		<category><![CDATA[Los Angeles]]></category>
		<category><![CDATA[Mother's Milk (1989)]]></category>
		<category><![CDATA[My Friends]]></category>
		<category><![CDATA[On Mercury]]></category>
		<category><![CDATA[One Hot Minute (1995)]]></category>
		<category><![CDATA[Osh Klinghoffer]]></category>
		<category><![CDATA[Otherside]]></category>
		<category><![CDATA[Porcelain]]></category>
		<category><![CDATA[Red Hot Chili Peppers]]></category>
		<category><![CDATA[Red Hot Chili Peppers en güzel şarkıları]]></category>
		<category><![CDATA[Road Tripping]]></category>
		<category><![CDATA[Scar Tissue]]></category>
		<category><![CDATA[Snow (Hey Oh)]]></category>
		<category><![CDATA[Stadium Arcadium]]></category>
		<category><![CDATA[Stadium Arcadium (2006)]]></category>
		<category><![CDATA[Suck My Kiss]]></category>
		<category><![CDATA[Tell Me Baby]]></category>
		<category><![CDATA[The Red Hot Chili Peppers (1984)]]></category>
		<category><![CDATA[The Uplift Mofo Party Plan (1987)]]></category>
		<category><![CDATA[The Zephyr Song]]></category>
		<category><![CDATA[Under The Bridge]]></category>
		<category><![CDATA[Universally Speaking]]></category>
		<category><![CDATA[ve Jack Irons]]></category>
		<category><![CDATA[Wet Sand]]></category>
		<category><![CDATA[• Factory Of Faith • Higher Ground • Snow (Hey Oh) • Universally Speaking • Scar Tissue • My Friends • Otherside • Stadium Arcadium • Don’t Forget Me • Suck My Kiss • Californication • The Zephyr Song]]></category>

		<guid isPermaLink="false">http://www.yusufaytas.com/?p=1716</guid>
		<description><![CDATA[Red Hot Chili Peppers(Red Hot) uzun yıllar eskimeyen gruplardan biri. 1983 yılında Los Angeles&#8217;ta kurulan grubun orjinal üyeleri Anthony Kiedis (vokal), Flea (bass gitar), Hillel Slovak (gitar), ve Jack Irons (drums) idi. Sonradan 1988 yılında Slovak aşırı dozda uyuşturucu sonucu öldü. Bu noktada grubun iki üyesi değişti ve yerlerine John Frusciante (gitar) ve Chad Smith [...]]]></description>
			<content:encoded><![CDATA[<p>Red Hot Chili Peppers(Red Hot) uzun yıllar eskimeyen gruplardan biri. 1983 yılında Los Angeles&#8217;ta kurulan grubun orjinal üyeleri Anthony Kiedis (vokal), Flea (bass gitar), Hillel Slovak (gitar), ve Jack Irons (drums) idi. Sonradan 1988 yılında Slovak aşırı dozda uyuşturucu sonucu öldü. Bu noktada grubun iki üyesi değişti ve yerlerine John Frusciante (gitar) ve Chad Smith (drums) geldi. Red Hot ilk yıllarında aslında çok da başarılı sayılmazdı. Doksanlı yıllardaki başarılı profilleri rock müzikteki ünlerini artırdı ve artık bilinen bir grup halini aldılar.<br />
1995 yılında grub tekrardan ayrılmak zorunda kaldı. 1998 yılında Frusciante yeniden gruba katılarak grubu dağılma sürecinden kurtulmuş oldu. 1999 yılında ki Californication albümleriylede süper bir dönüş yaptılar. Grub günümüze kadar başarılı albümlere imza attılar. Şu an Frusciante’nin yerine Osh Klinghoffer geldi.<br />
Red Hot hakkında kısa bir bilgi verdikten sonra yaptıkları müzik üzerine bahsetmek istiyorum. Red Hot genelde anlamsız sözlerin havada uçuştuğu ama solo müzik açısından olayı çözmüş diye nitelendirdiğim bir grup. Red Hot seslendirdiği çoğu şarkıda bu durumu gözlemlemek mümkün. Aşağıda verdiğim Dani California adlı şarkının nakaratına bakarsak, biri birinden alakasız cümleler ile dolduğunu görüyoruz. Fakat, sözcükler söylendiğinde kafiyeli gibi olduğundan kulağa hoş geliyorlar. Dolayısıyla, müziğin ritmiyle sözlerin temaşası birleşince ortaya keyifle dinleyebileceğimiz şarkılar çıkıyor.<br />
&#8220;California rest in peace<br />
Simultaneous release<br />
California show your teeth<br />
She&#8217;s my priestess, I&#8217;m your priest.&#8221;<br />
Ben hiç bir müzik grubunun bütün şarkılarını dinlemiyorum genelde. İçlerinden bazıları bana hitap ediyor diyebilirim. Red Hot’ın çoğu şarkısını seviyorum ama. Beğendiğim(En sevdiğim ise Can’t Stop) Red Hot parçalarının aşağıda listesini veriyorum, benden Red Hot sevenlere gelsin <img src='http://www.yusufaytas.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .<br />
• Factory Of Faith<br />
• Higher Ground<br />
• Snow (Hey Oh)<br />
• Universally Speaking<br />
• Scar Tissue<br />
• My Friends<br />
• Otherside<br />
• Stadium Arcadium<br />
• Don’t Forget Me<br />
• Suck My Kiss<br />
• Californication<br />
• The Zephyr Song<br />
• Can’t Stop<br />
• Easily<br />
• Could Die For You<br />
• Porcelain<br />
• Give It Away<br />
• Especially In Michigan<br />
• Happiness Loves Company<br />
• Under The Bridge<br />
• On Mercury<br />
• Wet Sand<br />
• Road Tripping;<br />
• Tell Me Baby<br />
• By the Way<br />
• Dani California<br />
• Aeroplane</p>
<p><iframe src="http://www.youtube.com/embed/Sb5aq5HcS1A" frameborder="0" width="420" height="315"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.yusufaytas.com/red-hot-chili-peppers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cepheye Yönelik Programlama</title>
		<link>http://www.yusufaytas.com/cepheye-yonelik-programlama/</link>
		<comments>http://www.yusufaytas.com/cepheye-yonelik-programlama/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 07:50:57 +0000</pubDate>
		<dc:creator>Yusuf Aytaş</dc:creator>
				<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[@Autowired]]></category>
		<category><![CDATA[AfterReturning]]></category>
		<category><![CDATA[AfterThrowing]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[AOSD]]></category>
		<category><![CDATA[AOSD uygulamaları]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[aspect-oriented programming]]></category>
		<category><![CDATA[AspectJ]]></category>
		<category><![CDATA[cep]]></category>
		<category><![CDATA[Cepheye Yönelik Programlama]]></category>
		<category><![CDATA[component]]></category>
		<category><![CDATA[cross-cutting concerns]]></category>
		<category><![CDATA[dependency]]></category>
		<category><![CDATA[doAccessCheck]]></category>
		<category><![CDATA[execution]]></category>
		<category><![CDATA[Güvenlik]]></category>
		<category><![CDATA[high coupling]]></category>
		<category><![CDATA[Inversion Of Control]]></category>
		<category><![CDATA[kayıt düşme]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[logAccessCheck]]></category>
		<category><![CDATA[logger]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[maintainable]]></category>
		<category><![CDATA[pointcut]]></category>
		<category><![CDATA[saveStrory]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[spring]]></category>
		<category><![CDATA[spring aop]]></category>
		<category><![CDATA[Spring Bean]]></category>
		<category><![CDATA[Spring Framework]]></category>
		<category><![CDATA[transaction processing]]></category>
		<category><![CDATA[UnAuthorizedUserException]]></category>
		<category><![CDATA[veri işleme]]></category>
		<category><![CDATA[within]]></category>

		<guid isPermaLink="false">http://www.yusufaytas.com/?p=608</guid>
		<description><![CDATA[Yazılım dünyasında başlıca endişelerinden biri, yazılımdaki parçaların biri birine çok bağlanmasıdır(high coupling, cross-cutting concerns). Bu durum yazılımın belirli bir noktadan sonra anlaşılmaz, ayrıştırılamaz, ilerletilebilemez hale gelmesine yol açar. Çare olarak yazılımcılar, en yaygın yöntem olan yazılım şablonlarını kullanırlar. Fakat, bazen işler o kadar karmaşık bir hal alır ki artık, yazılım şablonları da karmaşayı sonlandıramaz. Bu [...]]]></description>
			<content:encoded><![CDATA[<p>Yazılım dünyasında başlıca endişelerinden biri, yazılımdaki parçaların biri birine çok bağlanmasıdır(high coupling, cross-cutting concerns). Bu durum yazılımın belirli bir noktadan sonra anlaşılmaz, ayrıştırılamaz, ilerletilebilemez hale gelmesine yol açar. Çare olarak yazılımcılar, en yaygın yöntem olan yazılım şablonlarını kullanırlar. Fakat, bazen işler o kadar karmaşık bir hal alır ki artık, yazılım şablonları da karmaşayı sonlandıramaz. Bu noktada cepheye yönelik programlama(aspect-oriented programming, AOSD) yazılımcıların imdadına yetişmektedir. Cepheye yönelik programlama, destekleyen yada yardımcı olarak görev yapan kısımların, asıl parçalardan arındırılmasıdır. AOSD, farklı işlevlere sahip kısımların, biri birinden ayrı(seperation of concerns) programlanmasına olanak tanıyarak karmaşayı giderebilir. Yazımın devamında, biri birine bağlanan parçalarından, AOSD&#8217;den ve son olarakta AOSD uygulamalarından bahsedeceğim.</p>
<p>Parçaların biri birine bağlı olması, gerçek hayatta karşımıza sıkça çıkan sorunlardan biridir. Çoğu zaman, yazlımın içindeki bağlılıkların(dependency) ortaya çıkmasında başlıca rol oynamaktadır. Bu duruma örnek verecek olursak, bir fonksiyonda güvenlik(security), kayıt düşme(logging) ve veri işleme(transaction processing) bağlılıkları olabilir. Bunları aynı yerde yazmak, yazılımın çok karmaşık bir yapıya bürünmesine neden olur. Bu durum, önemli bir dez avantaja, yazılım parçalarının yeniden kullanılmasını engel teşkil eder. Aşağıdaki örnekte bu duruma örnek verebileceğimiz bir fonksiyon görebilirsiniz.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">boolean</span> saveStory<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> story<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">Exception</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>user.<span style="color: #006633;">isAuthenticatedUser</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>persister.<span style="color: #006633;">save</span><span style="color: #009900;">&#40;</span>user.<span style="color: #006633;">id</span>, story<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			logger.<span style="color: #006633;">info</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Story for the user has been added.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
			logger.<span style="color: #006633;">error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Story is not saved.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #000000; font-weight: bold;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> StoryNotSavedException<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
		logger.<span style="color: #006633;">error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;User is not authorized.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> UnAuthorizedUserException<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Yazılımdaki kısımların biri birine bağlı olması sorununu AOSD ile etkili bir şekilde çözebiliriz. AOSD bizim asıl fonksiyonu hayata geçirip, yardımcı fonksiyonlardan kurtulmamızı sağlayan bir yaklaşımdır. Yukarıdaki örnek üzerinden gidecek olursak, fonksiyondaki asıl amaç kullanıcı hikayesini başarılı bir şekilde kaydetmektir. Ama hikayeyi kaydederken, hikayenin kaydedildiğine dair kayıt düşme, kullanıcının bu işlem için yetkili olup olmadığına bakma ve veri işleme bizim yardımcı yada destekleyen işlevlerimizdir. AOSD, bizim asıl fonksiyona yoğunlarşıken, dışarıdan müdahale ile(by the help of pointcut) gerekli diğer işlevleri yerine getirmemizi sağlar.</p>
<p>Spring Framework AOSD&#8217;ye aspectj paketiyle destek oluyor. Dahası, Spring Framework kendiliğinden bazı cepheleri(aspect) sağlıyor çünkü Spring&#8217;in uyguladığı annotation&#8217;lar  cepheye yönelik programlamanın parçalarıdır denebilir. Mesela, @Autowired-Spring Bean olan bir nesnenin başka bir nesne içinden kısa yoldan çağrılmasına yarar yada @Component-Sınıfın Spring Bean olduğunu gösterir. Bu tip kullanımlar koddaki bağımlılığı azaltarak, fonksiyonların yada sınıfların daha basit olmasına yardımcı olarak, Spring&#8217;in daha basit olmasını sağlıyor.</p>
<p>Cepheye yönelik programlamanın uygulamasını Spring Framework&#8217;un AspectJ paketini kullanarak yapabiliriz.  Aşağıdaki kodda size yukarıda verilen fonksiyonun, cephe yardımıyla nasıl kayıt düşme bağlılığından kurtaracağımızı görebilirsiniz. Kısaca bir kaç kavramdan bahsetmek istiyorum. AOSD&#8217;de fonksiyonlara erişim noktası pointcut adıyla tanımlanmıştır. Belirli bir erişim noktasıyla, istediğiniz fonksiyona ulaşıp fonksiyonun işleyişine(@AfterReturning) göre işlem yapabiliriz. Bizim örneğimizde within ve execution erişim noktalarını kullanarak fonksiyona ulaşıp, işleyişine göre kayıt düşme işlemini gerçekleştirdik. Kullanım detayları için Spring AOSD referansına bakabilirsiniz.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">com.yusufaytas.ao</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.apache.log4j.Logger</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.aspectj.lang.annotation.AfterReturning</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.aspectj.lang.annotation.AfterThrowing</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.aspectj.lang.annotation.Aspect</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.aspectj.lang.annotation.Pointcut</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.yusufaytas.example.StoryNotSavedException</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.yusufaytas.example.UnAuthorizedUserException</span><span style="color: #339933;">;</span>
&nbsp;
@Aspect
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> LoggingAspect <span style="color: #009900;">&#123;</span>
&nbsp;
	Logger logger <span style="color: #339933;">=</span> Logger.<span style="color: #006633;">getLogger</span><span style="color: #009900;">&#40;</span>LoggingAspect.<span style="color: #000000; font-weight: bold;">class</span>.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	@Pointcut<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;execution(public * saveStory(..))&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> saveStory<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
	@Pointcut<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;within(com.yusufaytas.example.LoggingExample)&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> inLoggingExample<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
	@Pointcut<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;saveStory()&amp;&amp;inLoggingExample()&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> saveStoryInLoggingExample<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
&nbsp;
	@AfterThrowing<span style="color: #009900;">&#40;</span>pointcut<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;saveStoryInLoggingExample()&quot;</span>,throwing<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;ex&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> logUnAuthorizedUserException<span style="color: #009900;">&#40;</span>UnAuthorizedUserException ex<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		logger.<span style="color: #006633;">error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;User is not authorized.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	@AfterThrowing<span style="color: #009900;">&#40;</span>pointcut <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;saveStoryInLoggingExample()&quot;</span>,throwing<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;ex&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> logStoryNotSavedException<span style="color: #009900;">&#40;</span>StoryNotSavedException ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		logger.<span style="color: #006633;">error</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Story is not saved.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	@AfterReturning<span style="color: #009900;">&#40;</span>pointcut<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;saveStoryInLoggingExample()&quot;</span>,returning<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;isSaved&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> logDatabaseAccess<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">boolean</span> isSaved<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		logger.<span style="color: #006633;">info</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Story for the user has been added.&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Yazılımda öncelikli amacımız, yazdığımız kodun basit ve olabildiğince geliştirilebilir, sürdürülebilir yada rahat bir yapıya sahip olmasıdır. Bu durum göze alındığında, cepheye yönelik programlama, bu ihtiyaçları karşılamak için kullandığımız bir yöntemdir. Bunun haricinde daha öncede bahsettiğimiz, yazılım şablonları yada kullanılan kütüphaneler yine yukarıda saydığımız gereksinimleri karşılamaya yöneliktir. Yazıda sıkça bahsettiğim Spring Framework de sınıfların biri birine bağlanmasını önleyen bir şablonu(inversion of control) hayata geçirerek yazılımcıya basit bir ortam sunarak gereksinimlerimizi karşılamaktadır. Sonuç olarak, cepheye yönelik programlama bazı noktalarda iyi bir yöntem olsa da öncelikli tercihin yazılım şablonları yada kütüphane desteğini kullanmak olduğuna inanmaktayım. Her konuda olduğu gibi değişik yaklaşımlar arasından en iyisini seçmenin yada birden fazla yaklaşıma sahip olmanın fark yaratacağını düşünüyorum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yusufaytas.com/cepheye-yonelik-programlama/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FC Barselona Rüya Takım mı?</title>
		<link>http://www.yusufaytas.com/fc-barselona-ruya-takim-mi/</link>
		<comments>http://www.yusufaytas.com/fc-barselona-ruya-takim-mi/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 08:03:02 +0000</pubDate>
		<dc:creator>Yusuf Aytaş</dc:creator>
				<category><![CDATA[FCBarcelona]]></category>
		<category><![CDATA[1953-60]]></category>
		<category><![CDATA[1965-73]]></category>
		<category><![CDATA[1974-76]]></category>
		<category><![CDATA[1975-84]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Alfredo Di Stefano]]></category>
		<category><![CDATA[Bayern Munich]]></category>
		<category><![CDATA[England]]></category>
		<category><![CDATA[Fabregas]]></category>
		<category><![CDATA[FIFA Ballon d'Or]]></category>
		<category><![CDATA[Franz Beckenbauer]]></category>
		<category><![CDATA[goal.com]]></category>
		<category><![CDATA[Holland]]></category>
		<category><![CDATA[Hollanda]]></category>
		<category><![CDATA[İngiltere]]></category>
		<category><![CDATA[ingiltere premier ligi]]></category>
		<category><![CDATA[Iniesta]]></category>
		<category><![CDATA[İspanya]]></category>
		<category><![CDATA[Johan Cruyff]]></category>
		<category><![CDATA[la liga]]></category>
		<category><![CDATA[Lionel Andreas Messi]]></category>
		<category><![CDATA[Liverpool]]></category>
		<category><![CDATA[Pedro]]></category>
		<category><![CDATA[Pique]]></category>
		<category><![CDATA[Puyol]]></category>
		<category><![CDATA[Real Madrid]]></category>
		<category><![CDATA[Rüya takım]]></category>
		<category><![CDATA[Rüya takım barselona]]></category>
		<category><![CDATA[Villa]]></category>
		<category><![CDATA[Xavi]]></category>

		<guid isPermaLink="false">http://www.yusufaytas.com/?p=552</guid>
		<description><![CDATA[Son zamanlarda medyada özelliklede goal.com&#8217;da lanse edilen bir olay var; şu anki barselona takımı bütün zamanların en iyi takımı mı. Yalnız Barselona&#8217;ya bütün zamanların en iyi takımı diyebilmek için, futbolun en eski zamanlarından şu ana kadar gelip geçen en iyi  takımlar ile karşılaştırmak gerekiyor. Barselona&#8217;yı değerlendirmeden önce biz bu takımları tanıyalım. Daha sonrasında da Barselona [...]]]></description>
			<content:encoded><![CDATA[<p>Son zamanlarda medyada özelliklede goal.com&#8217;da lanse edilen bir olay var; şu anki barselona takımı bütün zamanların en iyi takımı mı. Yalnız Barselona&#8217;ya bütün zamanların en iyi takımı diyebilmek için, futbolun en eski zamanlarından şu ana kadar gelip geçen en iyi  takımlar ile karşılaştırmak gerekiyor. Barselona&#8217;yı değerlendirmeden önce biz bu takımları tanıyalım. Daha sonrasında da Barselona ile karşılaştırarak, Barselona&#8217;nın en iyi takım olup olmadığına karar verebiliriz.</p>
<p>Karşılaştırmamıza ilk olarak Bayern Munich ile başlıyoruz, en iyi oldukları dönem ise 1974-76. Bu dönemde Bayern, 3 defa o zamanın şampiyonlar ligi kupasını aldı. Bu dönem içinde göze çok güzel bir futbol oynamamalarına rağmen bir çok kupanın sahibi olmayı başarabilmişlerdi. Takımda öne çıkan oyuncu, Almanların gelmiş geçmiş en iyi futbolcusu diye adlandırabileceğimiz Franz Beckenbauer.</p>
<p><img class="aligncenter size-full wp-image-566" title="2011-08-19_fcbarcelona" src="http://www.yusufaytas.com/wp-content/uploads/2011/11/2011-08-19_fcbarcelona.jpg" alt="" width="640" height="360" /></p>
<p>Bir sonraki takımımız ise Liverpool. 1975-84 seneleri arasında 4 kere o zamanın şampiyonlar ligi şampiyonu ve 7 defada kendi liglerinde şampiyon olmayı başarmıştı. Çok iyi pas trafiği yapmalarına ve oyun akışını iyi kontrol etmelerine rağmen, başarılarının sırrı çok iyi olan savunmalarında yatıyordu. Hatta defanslarına, istatiksel olarak baktığımızda Ingiltere futbol ligi tarihinin en iyi defansı denebilir. Liverpool bu senelerde takım halinde iyi savunma yapıyordu, öne çıkan futbolcuları yok demek yanlış olmaz.</p>
<p>Ezeli rakibi Real Madrid&#8217;te 1953 ile 1960 yılları arasında gerçekten de bir çok başarının altına imza atmıştı. O zamanın şampiyonlar ligi kupasını tam 5 kere kaldırmışlardı. Öyleki Real Madrid hakkındaki tek yorum, bu futbolcular insan olamazdı. Takımın şüphesiz en iyi oyuncusu olan Alfredo Di Stefano, bütün zamanların en iyi futbolcuları arasında gösterilmektedir.</p>
<p>Bir zamanların efsane takımı Ajax ise Barcelona&#8217;ya en büyük rakiplerden biri gibi görünüyor. Ajax 1965 ile 1973 yılları arasında her kupayı kazandı. Bu kupaların arasında 3 kere o zamanın şampiyonlar ligi kupası var. Ajax takımhalinde müthiş bir akıcılık içerisinde futbol oynuyordu. Ajax&#8217;ın bu dönemdeki futboluna total futbol denildi ve kelimenin tam anlamıyla bir ekol haline geldiler. Gerçekten de bu dönem Ajax&#8217;ın ve Hollanda futbolunun çağıydı. Ajax&#8217;ın bu dönemdeki en iyi futbolcusu Johan Cruyff&#8217;tu. Bu dönemde, Cruyff 3 defa en iyi futbolcu(FIFA Ballon d&#8217;Or) ödülünü kazanmıştır.</p>
<p>Şimdi sıra Barcelona&#8217;da. Barselona&#8217;yı aslında daha iyi inceleyebilmek için bir 5-10 seneye ihtiyacımız var. Rakiplerinin hepsi uzun yıllar istikrarını sürdürebilmiş. Biz de Barcelona&#8217;yı değerlendirmek için beklemeliyiz. Hali hazırda, rüya takım olma yolunda ise emin adımlarla yürüyor. Futbolcu bazında baktığımızda, kaleci ve sol bek hariç , her biri mevkilerinde en iyi futbolcular. Takdir edersiniz ki, futbolcu kalitesi takımı başarıya götürebilecek en önemli etkenlerden biri. Futbolcuların kalitesinin yanı sıra, takım olarak da iyi bir görünümdeler. Bütün bunları düşündüğümüzde, Barselonanın rüya takım olma ihtimali çok yüksek.</p>
<p>Şu anki barselona ile saydığımız diğer takımları karşılaştıracak olursak, Barselona&#8217;nın rakiplerinden hiçte alta kalır yanı olmadığını görebiliriz. Bence en önemli rakibi olan Ajax ile hemen hemen aynı seviyede diyebiliriz. Çünkü, Ajax&#8217;ın oynadığı total futbolu Barselona&#8217;da gözlemleyebiliyoruz. Rakip kim olursa olsun, topa sahip olum hücumu düşünen bu anlayış hem göze hitap ediyor, hem de iyi sonuçlar veriyor. Barselona istikrarı yakalarsa, rüya takım olucaktır.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.yusufaytas.com/fc-barselona-ruya-takim-mi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jose Mourinho</title>
		<link>http://www.yusufaytas.com/jose-mourinho/</link>
		<comments>http://www.yusufaytas.com/jose-mourinho/#comments</comments>
		<pubDate>Fri, 22 Apr 2011 11:50:11 +0000</pubDate>
		<dc:creator>Yusuf Aytaş</dc:creator>
				<category><![CDATA[FCBarcelona]]></category>
		<category><![CDATA[Baby Robson]]></category>
		<category><![CDATA[Barcelona]]></category>
		<category><![CDATA[Benfica]]></category>
		<category><![CDATA[Champions Cup]]></category>
		<category><![CDATA[Chealsea]]></category>
		<category><![CDATA[Cristiano Ronaldo]]></category>
		<category><![CDATA[Deco]]></category>
		<category><![CDATA[Didier Drogba]]></category>
		<category><![CDATA[Hayatı]]></category>
		<category><![CDATA[Ibrahimovic]]></category>
		<category><![CDATA[Internazionale]]></category>
		<category><![CDATA[José Félix Mourinho]]></category>
		<category><![CDATA[José Mário dos Santos Félix Mourinho]]></category>
		<category><![CDATA[Jose Mourinho]]></category>
		<category><![CDATA[jose mourinho biyografi]]></category>
		<category><![CDATA[jose mourinho hayati]]></category>
		<category><![CDATA[jose mourinho kimdir]]></category>
		<category><![CDATA[Lampard]]></category>
		<category><![CDATA[Lionel Messi]]></category>
		<category><![CDATA[Louis Van Gaal]]></category>
		<category><![CDATA[Mesut Özil]]></category>
		<category><![CDATA[Michael Essien]]></category>
		<category><![CDATA[Mou]]></category>
		<category><![CDATA[Portekiz]]></category>
		<category><![CDATA[Portekizli menajer]]></category>
		<category><![CDATA[Portuguese football manager]]></category>
		<category><![CDATA[Real Madrid]]></category>
		<category><![CDATA[Ricardo Carvallo]]></category>
		<category><![CDATA[Roman Abramovich]]></category>
		<category><![CDATA[Setubal]]></category>
		<category><![CDATA[The Special One]]></category>
		<category><![CDATA[UEFA]]></category>
		<category><![CDATA[Wesley Snejder]]></category>

		<guid isPermaLink="false">http://www.yusufaytas.com/?p=529</guid>
		<description><![CDATA[Yazımın başında size Mourinho’yu kısaca tanıtmak istiyorum. Jose Mourinho, 26 Ocak 1963’te Portekiz’in Setubal şehrinde doğdu.  Baby Robson’ın yanında çevirmen olarak başladıktan sonra, kariyerine Barcelona’da devam etti. Burada da futbolcular ile teknik direktörler arasında çevirmenlik yaptı. Daha sonraları Louis Van Gaal’in isteği üzerine Barcelona B’nin teknik direktörlüğüne getirildi. Ayrıca bir kaç maçtada Mourinho’dan yardımcı teknik [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: justify;">
<p>Yazımın başında size Mourinho’yu kısaca tanıtmak istiyorum. Jose Mourinho, 26 Ocak 1963’te Portekiz’in Setubal şehrinde doğdu.  Baby Robson’ın yanında çevirmen olarak başladıktan sonra, kariyerine Barcelona’da devam etti. Burada da futbolcular ile teknik direktörler arasında çevirmenlik yaptı. Daha sonraları Louis Van Gaal’in isteği üzerine Barcelona B’nin teknik direktörlüğüne getirildi. Ayrıca bir kaç maçtada Mourinho’dan yardımcı teknik direktör olarak yararlandı.<a href="http://www.yusufaytas.com/wp-content/uploads/2011/04/jose_mourinho.jpg"><img class="alignright size-medium wp-image-531" title="jose_mourinho" src="http://www.yusufaytas.com/wp-content/uploads/2011/04/jose_mourinho-219x300.jpg" alt="" width="219" height="300" /></a> Mourinho ilk olarak Benfica’da teknik direktörlük görevine getirildi. Burada yaşadığı başarıdan sonra Porto’nun ilgilisini çekti ve Porto’nun teknik patronu oldu. 2003 yılına gelindiğinde, ligde şampiyon olup ueafa kupasınıda kaldırmıştı. Bir sonraki yıl ise şampiyonlar ligi şampiyonu olarak dikkatleri üzerine topladı. Roman Abramovich’in isteği üzerine Chealsea ile el sıkıştı. Ciddi bir transfer bütçesiyle, Didier Drogba, Michael Essien, Ricardo Carvallo gibi önde gelen isimleri kadrosuna kattı. İlk senede ligde şampiyon olup, şampiyonlar liginde de yarı finale kalma başarısını gösterdi. Chealsea’de kaldığı süre boyunca bir çok başarıyı kucakladı. 2008’de Inter’in teknik direktörü olmayı kabul etti. İlk senesinde çok büyük başarılar bekleyen taraftarlara, isteneni kısmende olsa veremedi. İkinci senesinde bir çok transfere imza attı. Ibrahimovic ve Wesley Snejder gibi dünyanın sayılı futbolcularını kadrosuna kattı. 2009-2010 sezonun neredeyse her kupayı müzesine götürme başarısını yaşadı. 2010 yılında Real Madrid  teknik direktörlüğüne getirildi.</p>
<p>Mourninho şimdilerde dünya tarihindeki en iyi teknik direktörleri arasında gösteriliyor. Takma adı olarakta “<em>The Special One</em>” özel biri adıyla anılıyor. Mourinho şimdiye kadar çıktığı maçların 68% yenme oranıyla gerçekten de çok başarılı bir teknik direktör olduğunu gözler önüne seriyor. Kariyerindeki başarılı olmasında en büyük nedenlerden birinin İspanyolca, İngilizce, İtalyanca gibi bir çok dile hakim olmasının önemli bir yer tuttuğunun altını çiziyor. Genel olarak agresif çıkışları ve yüksek egosuyla gündeme gelen Mou, oldukça hazır cevap olduğunu her fırsatta eleştirmenlere gösteriyor.</p>
<p>Mou’yu bu kadar tanıttıktan sonra, neden iyi olduğunu kendimce yorumlamak istiyorum. Bir takımı takım yapan oyuncularıdır. Mourinho yaptığı transferle ile kendisin futbolcuları analiz etmekteki becerisini kantılıyor. Bunlara bir çok örnek vermek mümkün, mesela Mesut Özil, Essien, Drogba, Deco ve daha niceleri. Bu oyuncular bulundukları takımlarda gerçekten iyiydiler ama onların birer yıldız olduğunun farkına varmak herkesin harcı değil. Zaten, yıldızları bir arada oynatabilmekte önemli bir yeti. Mou, ayrıca taktik ve teknik olarak gerçektende çok yetenekli. Bir çok farklı ligde bir çok takımda teknik direktörlük yapıp hepsinde de başarılı oldu. Bu takımlarda uyguladığı taktikler ise birbirinden farklıydı çünkü takım için ideali bulmayı biliyordu. Bu onun taktik bilgisini ve oyuncuları uygulanan taktiğe alıştırma becerisini gösterir. Ayrıca Mou, saha içinde de yaptığı yerinde değişikliklerle de oyun içinde maça hakim olabilmekte, müdahaleleri ile maç çevirip, maç kazanmayı en iyi şekilde başarabilmekte. Dahası Mourinho, büyük maçların adamı. Karşısındaki teknik adamı oynattığı oyun sitili ile ters köşe yapmakta üstüne yok. Bir bakarsınız savunma oyuncusu hücum hattında pres yaptığını görürsünüz yada bir hücum oyuncusu savunmaya olabildiğince yakın oynattığına şahit olursunuz. Mourinho, futbolcularını maça hazırlama ve onlara kazanma hırsını aşılamakta da mükemmel. Cristiano Ronaldo’ya bile pres yaptırabiliyorsa yada takım ruhuyla oynamayı az da olsa öğretebiliyorsa, gerçektende ikna kabiliyeti olarak ve oyuncu yönetme becerisi olarak Mou’yu yüceltmek yersiz olmasa gerek. Son olarak Mou çok istikrarlı bir teknik adam olduğunu yaptığı maçlara ve istatistiklere bakarak görebiliriz. Barcelona belkide gelmiş geçmiş en iyi futbolu oynarken, Real Madrid’te çok büyük işler yaptı;  yapmaya da devam edeceğine eminim.</p>
<p>Yazımın son kısmında olaylara başka bir açıdan bakalım. Ya Mourinho Barcelona’nın başında olsaydı. Eğlenceli bir takım olacağına ve  gücüne güç katacağına kesinlikle eminim. Aslında bildiğimiz gibi Barcelona’ya çok da yabancı değil Mou,  belkide bir gün Barçanın teknik direktörlüğünü yapar. Barcelona’ya katacaklarına gelirsek, bir kere çok iyi transferler yapacağı aşikar. Sonuçta Barcelona bütçesi Madrid’in kadar olmasada, çok da aşağı kalır yanı olduğunu düşünmüyorum. Barçada hali hazırda gayet işleyen bir taktik var bunu belki biraz daha geliştirilebilir ama maçların akışına çok iyi müdahalelerde bulunacaktır. Son olarak, futbolcular zaten hazır durumda ama onlara daha fazlasını verebilirsiniz, bu noktada Mou ciddi anlamda iş görecektir. Kimbilir, belki bir gün Barça’nın teknik adamı olur <img src='http://www.yusufaytas.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Yazımı güncellemek istedim çünkü bir önceki paragrafta Mourinho&#8217;nun Barcelona&#8217;nın başında olması ile ilgili yazdıklarımı geri alıyorum. Bu kadar ahlaksız bir şekilde futbol oynatan bir adamı Barcelona camiasının hiçbiryerinde olmaması gerektiğini düşünüyorum. Kendi futbol ahlakıda ciddi derece sorgulanmalı. Hem verdiği demeçlerle, hem de yaptığı hareketlerle futbolu katlediyor. Evet Mourinho Barcelona&#8217;nın hiç bir yerinde olmamalı.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.yusufaytas.com/jose-mourinho/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mediator</title>
		<link>http://www.yusufaytas.com/mediator/</link>
		<comments>http://www.yusufaytas.com/mediator/#comments</comments>
		<pubDate>Tue, 02 Nov 2010 10:15:57 +0000</pubDate>
		<dc:creator>Yusuf Aytaş</dc:creator>
				<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[loosely coupled]]></category>
		<category><![CDATA[Mediator]]></category>
		<category><![CDATA[Mediator nesneye dayalı yazılım şablonu]]></category>
		<category><![CDATA[Mediator Object Oriented Design Pattern]]></category>
		<category><![CDATA[mediator pattern]]></category>
		<category><![CDATA[mediator şablonu]]></category>
		<category><![CDATA[nesneye dayalı programlama]]></category>
		<category><![CDATA[object oriented programming]]></category>

		<guid isPermaLink="false">http://www.yusufaytas.com/?p=510</guid>
		<description><![CDATA[Bu yazımda size Mediator adındaki nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım.Mediator bize, bjeler arasında fazla bağ kurmadan (tight-coupled) işlemlerimizi yapabilmeyi sağlar. Buradaki amacımız, objelerin biribirini bilmesine gerek kalmadan, bizim yarattığımız mediator sınıfını kullanarak işlerini yapabilmesidir. Genellikle ara yüz yazılımında kullanılan bu şablona şöyle bir örnek verebiliriz.  3 tane ışığımız var ve biz bunların [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazımda size Mediator adındaki nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım.Mediator bize, bjeler arasında fazla bağ kurmadan (tight-coupled) işlemlerimizi yapabilmeyi sağlar. Buradaki amacımız, objelerin biribirini bilmesine gerek kalmadan, bizim yarattığımız mediator sınıfını kullanarak işlerini yapabilmesidir. Genellikle ara yüz yazılımında kullanılan bu şablona şöyle bir örnek verebiliriz.  3 tane ışığımız var ve biz bunların kontrolünü sağlayacağız. Bu ışıklardan her seferinde birini açmak istiyoruz. İşte burada bu isteğimizi mediator sınıfında uyguluyoruz. Her ışığa basıldığında diğer ışıklarla ilgili işlemleri mediator sınıfında yapıyoruz. Dolayısıyla ışıkların biribirlerini bilmesine gerek kalmıyor. Aşağıda verdiğim kod örneğinde daha iyi anlamanızı sağlayacaktır.<a href="http://www.yusufaytas.com/wp-content/uploads/2010/11/mediator.jpg"><img class="aligncenter size-full wp-image-511" title="mediator" src="http://www.yusufaytas.com/wp-content/uploads/2010/11/mediator.jpg" alt="" width="546" height="256" /></a></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> Command<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> turnOn<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">abstract</span> <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Lamp <span style="color: #000000; font-weight: bold;">implements</span> Command<span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">boolean</span> isOn <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	Mediator mediator<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> Lamp<span style="color: #009900;">&#40;</span>Mediator mediator<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">mediator</span> <span style="color: #339933;">=</span> mediator<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> on<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">isOn</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> off<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">isOn</span> <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">abstract</span> <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> turnOn<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> GreenLamp <span style="color: #000000; font-weight: bold;">extends</span> Lamp<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> GreenLamp<span style="color: #009900;">&#40;</span>Mediator mediator<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span>mediator<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> turnOn<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		mediator.<span style="color: #006633;">turnOnGreenLamp</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> toString<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">isOn</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;GreenLamp is on&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;GreenLamp is off&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> RedLamp <span style="color: #000000; font-weight: bold;">extends</span> Lamp<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> RedLamp<span style="color: #009900;">&#40;</span>Mediator mediator<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span>mediator<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> turnOn<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		mediator.<span style="color: #006633;">turnOnRedLamp</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> toString<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">isOn</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;RedLamp is on&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;RedLamp is off&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> YellowLamp <span style="color: #000000; font-weight: bold;">extends</span> Lamp<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> YellowLamp<span style="color: #009900;">&#40;</span>Mediator mediator<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">super</span><span style="color: #009900;">&#40;</span>mediator<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> turnOn<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		mediator.<span style="color: #006633;">turnOnYellowLamp</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> toString<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">isOn</span><span style="color: #009900;">&#41;</span>
			<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;YellowLamp is on&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">return</span> <span style="color: #0000ff;">&quot;YellowLamp is off&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Mediator<span style="color: #009900;">&#123;</span>
	Lamp yLamp,gLamp,rLamp<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> turnOnYellowLamp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		yLamp.<span style="color: #006633;">on</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		gLamp.<span style="color: #006633;">off</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		rLamp.<span style="color: #006633;">off</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> turnOnGreenLamp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		yLamp.<span style="color: #006633;">off</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		gLamp.<span style="color: #006633;">on</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		rLamp.<span style="color: #006633;">off</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> turnOnRedLamp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		yLamp.<span style="color: #006633;">off</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		gLamp.<span style="color: #006633;">off</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		rLamp.<span style="color: #006633;">on</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> selectYellowLamp<span style="color: #009900;">&#40;</span>YellowLamp yLamp<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">yLamp</span> <span style="color: #339933;">=</span> yLamp<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> selectGreenLamp<span style="color: #009900;">&#40;</span>GreenLamp gLamp<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">gLamp</span> <span style="color: #339933;">=</span> gLamp<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> selectRedLamp<span style="color: #009900;">&#40;</span>RedLamp rLamp<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">rLamp</span> <span style="color: #339933;">=</span> rLamp<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> MediatorDemo <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span>args<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		Mediator m <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Mediator<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		YellowLamp yLamp <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> YellowLamp<span style="color: #009900;">&#40;</span>m<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		GreenLamp gLamp <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> GreenLamp<span style="color: #009900;">&#40;</span>m<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		RedLamp rLamp <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RedLamp<span style="color: #009900;">&#40;</span>m<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		m.<span style="color: #006633;">selectGreenLamp</span><span style="color: #009900;">&#40;</span>gLamp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		m.<span style="color: #006633;">selectRedLamp</span><span style="color: #009900;">&#40;</span>rLamp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		m.<span style="color: #006633;">selectYellowLamp</span><span style="color: #009900;">&#40;</span>yLamp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		yLamp.<span style="color: #006633;">turnOn</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>yLamp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>gLamp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>rLamp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;***************&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		rLamp.<span style="color: #006633;">turnOn</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>yLamp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>gLamp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>rLamp<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.yusufaytas.com/mediator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Strategy</title>
		<link>http://www.yusufaytas.com/strategy/</link>
		<comments>http://www.yusufaytas.com/strategy/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 08:21:23 +0000</pubDate>
		<dc:creator>Yusuf Aytaş</dc:creator>
				<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[insertion sort]]></category>
		<category><![CDATA[instruction]]></category>
		<category><![CDATA[Nesneye dayalı programlama şablonu]]></category>
		<category><![CDATA[Nesneye dayalı yazılım]]></category>
		<category><![CDATA[Object Oriented]]></category>
		<category><![CDATA[Object-Oriented Design Pattern]]></category>
		<category><![CDATA[quick sort]]></category>
		<category><![CDATA[strategy]]></category>
		<category><![CDATA[strategy design pattern]]></category>
		<category><![CDATA[Strategy Object Oriented Design Pattern]]></category>
		<category><![CDATA[strateji şablonu]]></category>

		<guid isPermaLink="false">http://www.yusufaytas.com/?p=504</guid>
		<description><![CDATA[Bu yazımda size Strategy adındaki nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Bu şablonun genel amacı yapılacak iş için alternatifler oluşturup, bu alternatifleride çalışma zamanında(runtime) seçebilme kabiliyetini sağlamaktır. Buna örnek verecek olursak, bir sıralama algoritması yazmak istiyoruz. Ama  bize verilen nesnelerin sayısı 30 dan küçük olduğunda insertion sort, büyük olduğunda da quick sort kullanacağız. [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazımda size Strategy adındaki nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Bu şablonun genel amacı yapılacak iş için alternatifler oluşturup, bu alternatifleride çalışma zamanında(runtime) seçebilme kabiliyetini sağlamaktır. Buna örnek verecek olursak, bir sıralama algoritması yazmak istiyoruz. Ama  bize verilen nesnelerin sayısı 30 dan küçük olduğunda insertion sort, büyük olduğunda da quick sort kullanacağız. İşte bu durumda bize, bu esnekliği sağlayan bir tasarım gerekli ki, stratejimizi çalışma zamanında değiştirerek sağlayabiliyoruz. Aşağıda verdiğimiz kodu anlatacak olursak. Şimdi bizim toplama, çıkarma, çarpma ve bölme işlemlerimiz var. Fakat biz hangisini kullanacağımıza çalışma zamanında karar vereceğiz, bu durumda aşağıda uyguladığımız gibi stratejimizi oluşturuyoruz. Eğer işlemi değiştirmek istiyorsak setInstruction methodunu çağırıyoruz.  Böylece sadece işlem yapan nesneyi değiştirerek, işlemimizi değiştirebiliyoruz.<a href="http://www.yusufaytas.com/wp-content/uploads/2010/11/strategy.jpg"><img class="aligncenter size-full wp-image-505" title="strategy" src="http://www.yusufaytas.com/wp-content/uploads/2010/11/strategy.jpg" alt="" width="456" height="256" /></a></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Calculator<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span>args<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		Executer ex <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Executer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		ex.<span style="color: #006633;">setInstruction</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Addition<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>ex.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		ex.<span style="color: #006633;">setInstruction</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Substraction<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>ex.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		ex.<span style="color: #006633;">setInstruction</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Multiplication<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>ex.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		ex.<span style="color: #006633;">setInstruction</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> Division<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>ex.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Executer <span style="color: #009900;">&#123;</span>
	Instruction instruction<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setInstruction<span style="color: #009900;">&#40;</span>Instruction instruction<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">instruction</span> <span style="color: #339933;">=</span> instruction<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> execute<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x,<span style="color: #000066; font-weight: bold;">int</span> y<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">return</span> instruction.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span>x,y<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> Instruction<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> execute<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x,<span style="color: #000066; font-weight: bold;">int</span> y<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Addition <span style="color: #000000; font-weight: bold;">implements</span> Instruction<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> execute<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x,<span style="color: #000066; font-weight: bold;">int</span> y<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">return</span> x<span style="color: #339933;">+</span>y<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Substraction <span style="color: #000000; font-weight: bold;">implements</span> Instruction<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> execute<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x,<span style="color: #000066; font-weight: bold;">int</span> y<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">return</span> x<span style="color: #339933;">-</span>y<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Multiplication <span style="color: #000000; font-weight: bold;">implements</span> Instruction<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> execute<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x,<span style="color: #000066; font-weight: bold;">int</span> y<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">return</span> x<span style="color: #339933;">*</span>y<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Division <span style="color: #000000; font-weight: bold;">implements</span> Instruction<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">int</span> execute<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x,<span style="color: #000066; font-weight: bold;">int</span> y<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">return</span> x<span style="color: #339933;">/</span>y<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.yusufaytas.com/strategy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Composite</title>
		<link>http://www.yusufaytas.com/composite/</link>
		<comments>http://www.yusufaytas.com/composite/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 21:19:12 +0000</pubDate>
		<dc:creator>Yusuf Aytaş</dc:creator>
				<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[component]]></category>
		<category><![CDATA[composite]]></category>
		<category><![CDATA[composite pattern]]></category>
		<category><![CDATA[nesneye dayalı programlama]]></category>
		<category><![CDATA[Nesneye dayalı programlama şablonu]]></category>
		<category><![CDATA[Object-Oriented Design Pattern]]></category>
		<category><![CDATA[recursive]]></category>
		<category><![CDATA[şablon]]></category>

		<guid isPermaLink="false">http://www.yusufaytas.com/?p=494</guid>
		<description><![CDATA[Bu yazımda size Composite adındaki nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Bu şablonun genel amacı tekrarlanan(recursive) parçaları(component) genel parçalardan farksız olarak tanımlayabilmektir. Parçaları kullanan sınıfların, parçaların kendi karakterlerini bilmeden parçaları kullanabilmelerini  Composite şablonu ile sağlayabiliyoruz. Aşağıda gördüğümüz tasarımda bir DocumentElement sınıfımız var ve bu sınıftan türeyen 3 tane sınıf var. Section adlı sınıf [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazımda size Composite adındaki nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Bu şablonun genel amacı tekrarlanan(recursive) parçaları(component) genel parçalardan farksız olarak tanımlayabilmektir. Parçaları kullanan sınıfların, parçaların kendi karakterlerini bilmeden parçaları kullanabilmelerini  Composite şablonu ile sağlayabiliyoruz. Aşağıda gördüğümüz tasarımda bir DocumentElement sınıfımız var ve bu sınıftan türeyen 3 tane sınıf var. Section adlı sınıf diğer sınıflardan farklı olarak DocumentElement listesine sahip. Bu şekilde bir tasarımla her bir sınıf, DocumentElement sınıfı olarak tanımlanabilirken aynı zamanda Section sınıfının içerisinde SubSection yani alt kısımlar da oluşturulabilmektedir.<a href="http://www.yusufaytas.com/wp-content/uploads/2010/10/composite.jpg"><img class="aligncenter size-full wp-image-496" title="composite" src="http://www.yusufaytas.com/wp-content/uploads/2010/10/composite.jpg" alt="" width="496" height="256" /></a></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">abstract</span> <span style="color: #000000; font-weight: bold;">class</span> DocumentElement<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> add<span style="color: #009900;">&#40;</span>DocumentElement de<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> remove<span style="color: #009900;">&#40;</span>DocumentElement de<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> DocumentElement getChild<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">abstract</span> <span style="color: #000066; font-weight: bold;">void</span> write<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Header <span style="color: #000000; font-weight: bold;">extends</span> DocumentElement<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> write<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Paragraph <span style="color: #000000; font-weight: bold;">extends</span> DocumentElement<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> write<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Section <span style="color: #000000; font-weight: bold;">extends</span> DocumentElement<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> add<span style="color: #009900;">&#40;</span>DocumentElement de<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> remove<span style="color: #009900;">&#40;</span>DocumentElement de<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> DocumentElement getChild<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> write<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.yusufaytas.com/composite/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Observer</title>
		<link>http://www.yusufaytas.com/observer/</link>
		<comments>http://www.yusufaytas.com/observer/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 19:02:41 +0000</pubDate>
		<dc:creator>Yusuf Aytaş</dc:creator>
				<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[BoxChart]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[Nesneye dayalı programlama şablonu]]></category>
		<category><![CDATA[Nesneye dayalı yazılım]]></category>
		<category><![CDATA[Object-Oriented Design Pattern]]></category>
		<category><![CDATA[observer]]></category>
		<category><![CDATA[Observer Şablonu]]></category>
		<category><![CDATA[One to many dependency]]></category>
		<category><![CDATA[PieChart]]></category>
		<category><![CDATA[tightly coupled]]></category>

		<guid isPermaLink="false">http://www.yusufaytas.com/?p=479</guid>
		<description><![CDATA[Bu yazımda size Observer adındaki nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Bu şablonun genel amacı bir objeyle başka objeler arasında bağ kurmaktır (One to many dependency). Yani eğer objenin birinde güncelleme olduysa diğerlerinde de bunun yansımasını sağlamaktır. Burada objeler arasında da çok fazla bağ(not tightly coupled) kurmadan işlemleri yapmaya yarar. Peki nerelerde kullanılır [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazımda size Observer adındaki nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Bu şablonun genel amacı bir objeyle başka objeler arasında bağ kurmaktır (One to many dependency). Yani eğer objenin birinde güncelleme olduysa diğerlerinde de bunun yansımasını sağlamaktır. Burada objeler arasında da çok fazla bağ(not tightly coupled) kurmadan işlemleri yapmaya yarar. Peki nerelerde kullanılır ? Eğer bir objede olan değişiklik diğer objelerin güncellenmesini gerektiriyorsa kullanılabilir. Yada bir obje diğer objelerin hakkında bilgi sahibi olmadan onları güncellemesi gerektiğinde yine bu şablon kullanılabilir. Size aşağıda verdiğim kod kısmında ise bu şablonun nasıl kullanıldığını göstermek istiyorum. Kodu kısaca anlatacak olursak Observer adlı bir interface kullanıyoruz. Bu interface den yararlanarak(implement) yazdığımız iki obje var. Bunlardan biri BoxChart diğeri ise PieChart. Başka bir sınıf(class) olarakta Observable ve bundan yararlanarak ürettiğimiz ConcreteObservable sınıfımızı görmekteyiz. Bunlarda sınıflar arası iletimi sağlayacak elemanlarımız. En sonunda ChartHandler adlı bir sınıfta da uyguladığımız şablonu çalıştırıyoruz. Bu şablon genel olarak kullanıcı arayüzü yapımında kullanılır. Örnek verecek olursak Java bir çok kütüphanesi bu şablonu kullanır.<a href="http://www.yusufaytas.com/wp-content/uploads/2010/08/observer.jpg"><img class="aligncenter size-full wp-image-480" title="observer" src="http://www.yusufaytas.com/wp-content/uploads/2010/08/observer.jpg" alt="observer" width="596" height="376" /></a></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> <span style="color: #003399;">Observer</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> handleNotification<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> <span style="color: #003399;">Observable</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> addObserver<span style="color: #009900;">&#40;</span><span style="color: #003399;">Observer</span> observer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> removeObserver<span style="color: #009900;">&#40;</span><span style="color: #003399;">Observer</span> observer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> notifyObservers<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> BoxChart <span style="color: #000000; font-weight: bold;">implements</span> <span style="color: #003399;">Observer</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">int</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> data<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> BoxChart<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">data</span> <span style="color: #339933;">=</span> data<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> handleNotification<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Box Chart data is : &quot;</span><span style="color: #339933;">+</span>data<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> PieChart <span style="color: #000000; font-weight: bold;">implements</span> <span style="color: #003399;">Observer</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000066; font-weight: bold;">int</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> data<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> PieChart<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> data<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">data</span> <span style="color: #339933;">=</span> data<span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> handleNotification<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Pie Chart data is : &quot;</span><span style="color: #339933;">+</span>data<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.util.ArrayList</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ConcreteObservable <span style="color: #000000; font-weight: bold;">implements</span> <span style="color: #003399;">Observable</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> ArrayList<span style="color: #339933;">&lt;</span>Observer<span style="color: #339933;">&gt;</span> list<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> ConcreteObservable<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		list <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ArrayList<span style="color: #339933;">&lt;</span>Observer<span style="color: #339933;">&gt;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> addObserver<span style="color: #009900;">&#40;</span><span style="color: #003399;">Observer</span> observer<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		list.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>observer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> removeObserver<span style="color: #009900;">&#40;</span><span style="color: #003399;">Observer</span> observer<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		list.<span style="color: #006633;">remove</span><span style="color: #009900;">&#40;</span>observer<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> notifyObservers<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000000; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>i<span style="color: #339933;">&lt;</span>list.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
			list.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span>i<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">handleNotification</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ChartHandler<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main <span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #000066; font-weight: bold;">int</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> data <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">//We do not use int since we want to pass </span>
		<span style="color: #666666; font-style: italic;">//data by reference by using int array instead.</span>
		BoxChart boxChart <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> BoxChart<span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		PieChart pieChart <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> PieChart<span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		ConcreteObservable observable <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ConcreteObservable<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		observable.<span style="color: #006633;">addObserver</span><span style="color: #009900;">&#40;</span>boxChart<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		observable.<span style="color: #006633;">addObserver</span><span style="color: #009900;">&#40;</span>pieChart<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		observable.<span style="color: #006633;">notifyObservers</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		data<span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>
		observable.<span style="color: #006633;">notifyObservers</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.yusufaytas.com/observer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facade</title>
		<link>http://www.yusufaytas.com/facade/</link>
		<comments>http://www.yusufaytas.com/facade/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 00:05:43 +0000</pubDate>
		<dc:creator>Yusuf Aytaş</dc:creator>
				<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[ALU]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[Facade]]></category>
		<category><![CDATA[Facade design pattern]]></category>
		<category><![CDATA[nesneye dayalalı programalama diyazn şablonu]]></category>
		<category><![CDATA[Object Oriented]]></category>
		<category><![CDATA[Object-Oriented Design Pattern]]></category>
		<category><![CDATA[package]]></category>

		<guid isPermaLink="false">http://www.yusufaytas.com/?p=469</guid>
		<description><![CDATA[Bu yazımda size Facade adındaki nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Bu şablon(pattern) genelde birden fazla pakete (package) aynı anda erişip bunlarla ilgili işlemleri yapabilmek adına tasarlanmış bir dizayndır. Demek istediğim birden fazla işlevi bir arada bulunduran işlemleri temelde daha kolaya indirgeyen bir yazılım unsurudur. Buna şöyle örnek verelim. Sizin computer adında bir [...]]]></description>
			<content:encoded><![CDATA[<p>Bu yazımda size Facade adındaki nesneye dayalı yazılım şablonunu (Object-Oriented Design Pattern) anlatacağım. Bu şablon(pattern) genelde birden fazla pakete (package) aynı anda erişip bunlarla ilgili işlemleri yapabilmek adına tasarlanmış bir dizayndır. Demek istediğim birden fazla işlevi bir arada bulunduran işlemleri temelde daha kolaya indirgeyen bir yazılım unsurudur. Buna şöyle örnek verelim. Sizin computer adında bir sınıfınız(class) var. Computer çalışması için birden fazla parça kulanır. Biz sadece CPU, Ram ve harddisk kullandığını varsayalım. Şimdi bu saydığım parçaların her biri paket olarak tasarlayalım çünkü birden fazla işlevi yerine getiriyor. Mesela CPU&#8217;yu ele alalım. Bu paketin içinde birden fazla sınıf bulunur. İşte dışarıdaki sınıfları bu kargaşadan kurtarmak için bir facade sınıfı yazarız ve bu sınıf üzerinden erişimi sağlarız. Şimdi bunu bir uml şeması ile gösterelim.</p>
<p><a href="http://www.yusufaytas.com/wp-content/uploads/2010/01/facade.jpg"><img class="aligncenter size-full wp-image-475" title="facade" src="http://www.yusufaytas.com/wp-content/uploads/2010/01/facade.jpg" alt="facade" width="576" height="376" /></a></p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ALU<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> execute<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//execute instructions</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Latch<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> fetch<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//fetch intruction from memory</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Disk<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> data<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">//gets data from disk</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Computer<span style="color: #009900;">&#123;</span>
	ALU alu<span style="color: #339933;">;</span>Latch latch<span style="color: #339933;">;</span>Disk disk<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> Computer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		alu <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ALU<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		latch <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Latch<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		disk <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Disk<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> run<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		alu.<span style="color: #006633;">execute</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		latch.<span style="color: #006633;">fetch</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		disk.<span style="color: #006633;">data</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> User<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> <span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
		Computer computer <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Computer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		computer.<span style="color: #006633;">run</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.yusufaytas.com/facade/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

