<?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>Blog &#8211; Alper Ergün</title>
	<atom:link href="https://www.alperergun.site/category/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.alperergun.site</link>
	<description></description>
	<lastBuildDate>Fri, 08 May 2026 17:54:32 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>JAVA MÜLAKAT SORULARI</title>
		<link>https://www.alperergun.site/java-mulakat-sorulari/</link>
		
		<dc:creator><![CDATA[ae_5206]]></dc:creator>
		<pubDate>Fri, 08 May 2026 17:37:38 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.alperergun.site/?p=205</guid>

					<description><![CDATA[1) Java Programının Çalışma Mantığı Nedir? &#160;Programcı Java kodunu yazar. “.java” dosyası olarak kaydedilir. Bu kod Java derleyicisi (eclipse vb.) ile derlenir. Sonuçta bytekod adı verilen (“.class” uzantılı) bir tür makine kodu ortaya çıkar. Platform bağımsızlığını sağlayan şey bytecode’ dur. Çünkü bir kere bytecode oluştuktan sonra yazılım sanal makine içeren tüm işletim sistemlerinde (Windows, Linux [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">1) <strong>Java Programının Çalışma Mantığı Nedir?</strong></p>



<p class="wp-block-paragraph"><strong>&nbsp;</strong>Programcı Java kodunu yazar. “.java” dosyası olarak kaydedilir. Bu kod Java derleyicisi (eclipse vb.) ile derlenir. Sonuçta bytekod adı verilen (“.class” uzantılı) bir tür makine kodu ortaya çıkar. Platform bağımsızlığını sağlayan şey bytecode’ dur. Çünkü bir kere bytecode oluştuktan sonra yazılım sanal makine içeren tüm işletim sistemlerinde (Windows, Linux vb.) çalışabilir.</p>



<p class="wp-block-paragraph"><strong>2) Java’ da Veri Türleri Nelerdir? Örnekle Açıkla</strong></p>



<p class="wp-block-paragraph">Java’ da veri türleri 2’ ye ayrılır:</p>



<ol class="wp-block-list">
<li>İlker Veri Türleri: byte, short, int, long, float, double, char, boolean</li>



<li>İlkel Olmayan Veri Türleri: String, Arrays(Diziler), Class (Sınıflar)</li>
</ol>



<p class="wp-block-paragraph"><strong>3) </strong><strong>Java&#8217;da equals() ve == arasındaki fark nedir?</strong></p>



<p class="wp-block-paragraph">Eşittir: Primitive tiplerde → değeri karşılaştırır. <code>equals()</code> içerik karşılaştırmak için kullanılır ne ilkel olmayan veri tiplerinde(String vb.) kullanılır</p>



<p class="wp-block-paragraph">4) <strong>Asenkron Programlama Nedir?</strong></p>



<p class="wp-block-paragraph">Bir programın eş zamanlı olarak birden fazla işlemi yönetebilmesini sağlayan bir programlama yaklaşımıdır. JS, Phyton, Kotlin asenkron programlama dilleridir.</p>



<p class="wp-block-paragraph"><strong>5) </strong><strong>This anahtar sözcüğü nedir?</strong></p>



<p class="wp-block-paragraph">o anda hangi nesne üzerinde işlem yapılıyorsa o nesnenin referansını döndürür.</p>



<p class="wp-block-paragraph"><strong>6) int ile Integer arasındaki Fark nedir?</strong></p>



<p class="wp-block-paragraph"><code>int</code>:  Java’nın temel veri tipidir. Hafızada direkt sayı tutulur. Daha hızlıdır. <code>null</code> olamaz. Metot değildir, nesne özellikleri yoktur.</p>



<p class="wp-block-paragraph"><code>Integer</code>, <code>int</code> için oluşturulmuş bir <strong>wrapper class</strong>’tır. Bir nesnedir (<code>Object</code>). <code>null</code> olabilir. İçinde yardımcı metotlar vardır. Koleksiyonlarda kullanılır (<code>ArrayList</code>, <code>HashMap</code> vb.)</p>



<p class="wp-block-paragraph"><strong>7) Java da Sınıf ve Nesne Kavramını açıkla</strong></p>



<p class="wp-block-paragraph">Sınıflar, nesnelerimiz için genel özellikler tanımladığımız yapılardır. Sınıf ( class) soyut bir veri tipidir. (Nesne(Object) sınıf kavramını soyutlaştırır. Örneğin kedi bir türdür yani bir sınıftır. Ama evde beslediğimiz kediyi bu sınıfın bir nesnesi olarak düşünebiliriz.</p>



<p class="wp-block-paragraph"><strong>8) “Final”&nbsp; anahtar kelimesi ne işe yarar?</strong><strong></strong></p>



<p class="wp-block-paragraph">final değişkenler sadece <strong>bir kez değer alabilir</strong>. Genelde sabitlerde kullanılır.</p>



<p class="wp-block-paragraph">final double PI = 3.14;</p>



<h4 class="wp-block-heading"><code>final</code> metodlarda, Bir metodun override edilmesini engeller. </h4>



<h4 class="wp-block-heading"><code>final</code> class’lar da, Bir class’ın miras alınmasını engeller.</h4>



<p class="wp-block-paragraph"><strong>9) “Static”&nbsp; anahtar kelimesi ne işe yarar? </strong><strong>Static ve non-static metotlar arasındaki temel fark nedir?</strong></p>



<p class="wp-block-paragraph">Oluşturuldukları sınıfın nesnesini oluşturmadan erişebileceğimiz fonksiyonlardır.</p>



<p class="wp-block-paragraph"><strong>10)&nbsp; Java&#8217;da lambda ifadeleri nedir ve nasıl kullanılır?</strong></p>



<p class="wp-block-paragraph"><strong>11)&nbsp; Java da “Constructor”&nbsp; kavramını açıkla</strong></p>



<p class="wp-block-paragraph">Her nesnenin ilk üretildiği anda çalıştırılan fonksiyonlardır. Bir constructor&#8217;da this() ve super() aynı anda kullanılamaz. Constructor return etmez yani değer döndürmez çünkü amacı bu değildir. Amacı, nesnenin başlangıç değerini atamaktır.<strong></strong></p>



<p class="wp-block-paragraph"><strong>12) Java da Encapsulation(Kapsülleme) kavramını ve önemini açıkla</strong></p>



<p class="wp-block-paragraph">Dışardan erişilmesini istemediğimiz veya kimin erişmesini istediğimiz yapıya denir. Bu yapı erişim belirteçleri ile kullanılır.</p>



<p class="wp-block-paragraph"><strong>13) Java da </strong><strong>Overriding ile Overloading in farklarını açıklayınız.</strong></p>



<p class="wp-block-paragraph">Overloading, aynı isme sahip metodların farklı sayıda ve türde parametre alarak yeniden yazılmış halidir. Yani metotun imzası değişir. Overriding, iki farklı class da aynı metod varken, birbirinden extend yani kalıtım ile kullanılıp aynı metodun içinin farklı olması anlamına gelir. Overridding; bir üst class daki çarpma metodunu, içindeki argümanları değiştirmeden aynı argümanlarla çağırıp kullanmaktır. Bu halde metot un imzası değişmez.</p>



<p class="wp-block-paragraph"><strong>14)</strong> <strong>Java&#8217;da Super Anahtar Kelimesi Ne İşe Yarar?</strong></p>



<p class="wp-block-paragraph">Üst sınıf (parent class) elemanlarına erişmek için kullanılır. Super anahtar kelimesi, özellikle inheritance (kalıtım) kullanırken çok önemlidir ve kodun daha düzenli ve anlaşılır olmasını sağlar. Ayrıca üst sınıfın davranışlarını alt sınıflarda genişletmeye olanak tanır.</p>



<p class="wp-block-paragraph"><strong>15)</strong> <strong>Java da Polimorfizm (Çok Biçimlilik) Nedir?</strong></p>



<p class="wp-block-paragraph">Bir nesnenin çok şekilli olarak kullanılabilmesidir. Nesne, aynı davranışı farklı formlar ve görünüşler ile yerine getirebilir. Gerçek hayattan örnek vermemiz gerekirse; bir kişinin birden fazla görevi yapması, misal erkek olan biri, bir koca, bir çalışan veya bir baba olabilir. Yani aynı kişi farklı davranışlara sahip olabilir ve farklı görevlere sahip olabilir.</p>



<p class="wp-block-paragraph"><strong>16) inner Class kavramını ve Static inner Class’ ı açıkla</strong></p>



<p class="wp-block-paragraph">İnner class özelliği sayesinde bir sınıf diğer bir sınıfın içerisinde tanımlanabilir. Böylece mantıksal bir bütünü oluşturan birçok sınıf tek bir çatı altında toplanabilir. Static inner class: Bir iç sınıf static olabilir. Bu da dış sınıfın bir nesnesini oluşturmadan ona erişebileceğiniz anlamına gelir. Dinamik boyut (otomatik büyüyüp küçülür). Hızlı erişim (indeks bazlı). Null değerleri kabul eder.</p>



<p class="wp-block-paragraph"><strong>17) </strong><strong>Java&#8217;da Javadoc nedir ve nasıl kullanılır?</strong></p>



<p class="wp-block-paragraph">Java kaynak kodunu belgelemek için kullanılan bir dokümantasyon aracıdır. Sık Kullanılan Javadoc Etiketleri:<em> </em><em>@param: Metot parametresini açıklar, @return: Dönüş değerini açıklar. @throws: Fırlatılan istisnaları açıklar. </em>Javadoc belgeleri, javadoc aracı kullanılarak HTML belgelerine dönüştürülebilir.</p>



<p class="wp-block-paragraph"><strong>18) ArrayList Nedir?</strong></p>



<p class="wp-block-paragraph">Java&#8217;da dinamik bir dizi yapısı sunan ve Collection Framework&#8217;ün bir parçası olan bir sınıftır. Normal bir dizi gibidir fakat boyut sınırı yoktur. İstenildiği zaman öğe eklenir veya öğe silinebilir. Sık ekleme/silme işlemlerinde performans düşer. Birbirini tekrar eden ve boş değerleri içerebilir. Primitive tipleri doğrudan depolayamaz (wrapper class kullanılır). Yani int,char, double vb. gibi ilkel türlerden ArrayList oluşturamayız.</p>



<p class="wp-block-paragraph"><strong>19) </strong><strong>Interfaceler ile Abstract’ lar arasındaki farklar nelerdir?</strong></p>



<p class="wp-block-paragraph"><strong>Javada Çoklu Kalıtım Yapılamaz yani bir sınıf birden fazla sınıfı extends ile miras alamaz.</strong>&nbsp;Çoklu kalıtım yapabilmek için Arayüzleri (Interfaces) veya dahili sınıfları kullanırız&nbsp; (Abstract ile interfaces farkı). Interface de Erişim belirtkesi ya public olur ya da hiç olmaz. Abstract’ lar private, protected değişken içerebilir. Arayüzde sadece default ve static metodlar içerir. Arayüzde yer alan tüm metotlar gövdesizdir yani abstract metotlar yer alır. Arayüzde yazılan metotlar gövdesiz olduğu için yaptıkları iş belli değildir.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="945" height="335" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-18.png" alt="" class="wp-image-206" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-18.png 945w, https://www.alperergun.site/wp-content/uploads/2026/05/image-18-300x106.png 300w, https://www.alperergun.site/wp-content/uploads/2026/05/image-18-768x272.png 768w" sizes="(max-width: 945px) 100vw, 945px" /></figure>



<p class="wp-block-paragraph"><strong>20)</strong> <strong>Inheritance (miras) ve polymorphism (çok biçimlilik) arasındaki temel fark nedir?</strong><strong> </strong>Inheritance, bir sınıfın başka bir sınıftan özelliklerini ve davranışlarını miras almasını ifade eder. Polymorphism ise aynı isme sahip ancak farklı davranışlara sahip olan nesneleri ifade eder. Inheritance, sınıflar arasında bir hiyerarşi oluştururken, polymorphism farklı sınıfların aynı ismi kullanarak genel bir arayüz sağlamasına olanak tanır.<strong></strong></p>



<p class="wp-block-paragraph"><strong>21) </strong><strong>Java&#8217;da composition nedir ve neden önemlidir?</strong></p>



<p class="wp-block-paragraph">Java&#8217;da composition, bir sınıfın başka bir sınıfın nesnesini kendi içinde bulundurması ilişkisidir.</p>



<p class="wp-block-paragraph">Composition&#8217;ın avantajları: Daha güçlü kapsülleme sağlar. Kodun yeniden kullanılabilirliğini artırır. Sınıflar arası bağımlılığı azaltır. Kalıtıma (inheritance) alternatif olarak daha esnek bir yapı sunar.</p>



<p class="wp-block-paragraph"><strong>22)&nbsp; </strong><strong>Java&#8217;da annotation nedir ve nasıl kullanılır?</strong></p>



<p class="wp-block-paragraph">Java Annotation&#8217;ları kodunuza üst veri (metadata) eklemenin bir yoludur. Java komutlarına ek bilgi eklemek için kullanılan ifadelerdir. Eklenen bu ek bilgiler komutların çalışmasını değiştirmeyecektir. Ancak Java Reflection yapısı kullanılarak annotation bilgileri alınır ve işlem yapılabilir. Yaygın Annotation&#8217;lar: @Override: Bir metodun üst sınıftan override edildiğini belirtir.</p>



<p class="wp-block-paragraph">@Deprecated: Bir metodun veya sınıfın kullanımının önerilmediğini gösteri</p>



<p class="wp-block-paragraph">@Target: Annotation&#8217;ın nerede (sınıf, metod, alan vb.) kullanılacağını belirler.</p>



<p class="wp-block-paragraph">Java annotation&#8217;lar, kodu daha okunaklı, düzenli ve anlaşılır hale getirmenin yanı sıra, framework&#8217;lerle entegrasyonu kolaylaştırır ve çalışma zamanında ek işlemler yapılmasına olanak tanır. Kendi annotation&#8217;larınızı oluşturarak özelleştirilmiş işlevler de ekleyebilirsiniz. XML konfigürasyonlarını azaltır, okunabilirliği artırır ve geliştirme sürecini kolaylaştırır.</p>



<p class="wp-block-paragraph"><strong>23) Java Development Kit (JDK) Nedir? JVM ile bağlantısı nedir?</strong></p>



<p class="wp-block-paragraph">JDK, JVM&#8217;yi ve ek araçları içerir. JVM, JDK&#8217;nin çalıştırma (runtime) kısmını sağlar. Bu nedenle, JDK olmadan Java uygulamaları geliştirmek mümkün değildir. JDK, Java uygulamalarını oluşturmak için gereken <strong>araçlar</strong>, <strong>kütüphaneler</strong> ve <strong>uygulama çalıştırma ortamını</strong> (JRE &#8211; Java Runtime Environment) bir araya getirir.</p>



<p class="wp-block-paragraph">JDK, aşağıdaki bileşenleri içerir:</p>



<p class="wp-block-paragraph">&nbsp; &#8211; Java Compiler (Derleyici) (javac) ve Java Runtime Environment (JRE)</p>



<p class="wp-block-paragraph"><strong>Akış Şeması</strong>: Kaynak Kod (.java) → [JDK (javac)] → Bytecode (.class) → [JVM] → Çalışan Program</p>



<p class="wp-block-paragraph"><strong>24)&nbsp; </strong><strong>Java da Enum kavramını açıkla</strong><strong></strong></p>



<p class="wp-block-paragraph">Enum (Enumeration), sabit değerlerin bir koleksiyonunu temsil eden özel bir sınıf türüdür. Türleri önceden tanımlanmış sabit değerleri ifade etmede kullanılır. Örneğin gün, ay, renk, yön isimleri gibi. Enum türler dışarıdan new operatörü ile türetilemezler. Enumlar içinde yazılan yapıcı metotlar sadece enum sabitleri tarafından çağırılabilirler.</p>



<p class="wp-block-paragraph"><strong>25)</strong> <strong>OOP nedir ve neden önemlidir?</strong></p>



<p class="wp-block-paragraph">OOP, nesneler arası ilişkilerin ve programlama yapısının bir paradigmasıdır. Java gibi birçok modern programlama dilinde temel bir yaklaşım olarak kullanılır. OOP, kodun düzenli, esnek, tekrar kullanılabilir ve anlaşılır olmasını sağlar. Temel prensipleri encapsulation (kapsülleme), inheritance (miras), polymorphism (çok biçimlilik) ve abstraction (soyutlama) içerir.</p>



<p class="wp-block-paragraph"><strong>26)</strong> <strong>Java da Thread nedir? </strong>Her bir işlemin altında çalışan alt işlemlere thread adı verilir. Aynı anda birden fazla işlem yapmayı sağlayan yapıya thread denir. Bu yapı sayesinde işlemler birbirlerini beklemeden kendi işlemini yapar. İş parçacıkları, bir programın aynı anda birden çok şey yaparak daha verimli çalışmasını sağlar. İş parçacıkları, ana programı kesintiye uğratmadan arka planda karmaşık görevleri gerçekleştirmek için kullanılabilir.<strong> </strong>Thread kullanımı için <strong>Thread</strong> sınıfını kalıtım almak(extends) veya <strong>Runnable</strong> arayüzünü uygulamak(implements) olmak üzere iki yöntem kullanılır.<strong></strong></p>



<p class="wp-block-paragraph"><strong>27)</strong> <strong>HashMap Nedir?</strong></p>



<p class="wp-block-paragraph">HashMap, Java programlama dilinde kullanılan bir veri yapısıdır ve anahtar-değer(key-value) çiftlerini depolamak için kullanılır. Her bir key, benzersiz olmalıdır ve bir değerle ilişkilendirilir.</p>



<p class="wp-block-paragraph"><strong>28) Java Collection Framework Nedir?</strong></p>



<p class="wp-block-paragraph">Collection: İçerisinde birden fazla nesne barındırabilen ve gerektiğinde nesne ekleme-silme gibi işlemlere imkan sağlayan bir başka nesnedir.</p>



<p class="wp-block-paragraph">Collection sınıfları 4 türdür.</p>



<p class="wp-block-paragraph">Nesneleri liste halinde tutan List sınıfları</p>



<p class="wp-block-paragraph">Vector, ArrayList, LinkedList, Stack</p>



<p class="wp-block-paragraph">Nesneleri tek olacak şekilde tutan Set sınıfları</p>



<p class="wp-block-paragraph">HashSet, TreeSet</p>



<p class="wp-block-paragraph">Nesneleri eklenme sırasına göre düzenleyen Queue sınıfları</p>



<p class="wp-block-paragraph">PriorityQueue, LinkedList</p>



<p class="wp-block-paragraph">Nesneleri tek bir anahtarla eşleştiren Map sınıfları</p>



<p class="wp-block-paragraph">HashMap, HashTable, LinkedHashMap, TreeMap.</p>



<p class="wp-block-paragraph"><strong>29)</strong> <strong>ArrayList ile LinkedList arasındaki fark nedir?</strong><strong></strong></p>



<p class="wp-block-paragraph">ArrayList sınıfının içinde normal bir dizi vardır. Bir öğe eklendiğinde, diziye yerleştirilir. Dizi yeterince büyük değilse, eskisinin yerini alacak yeni, daha büyük bir dizi oluşturulur ve eskisi kaldırılır. LinkedList öğelerini &#8220;kapsayıcılarda saklar.&#8221; Listenin ilk kapsayıcıya bir bağlantısı vardır ve her kapsayıcının listedeki bir sonraki kapsayıcıya bir bağlantısı vardır. Listeye bir öğe eklemek için öğe yeni bir kapsayıcıya yerleştirilir ve bu kapsayıcı listedeki diğer kapsayıcılardan birine bağlanır.</p>



<p class="wp-block-paragraph">Ne Zaman Hangisini Kullanmalı:</p>



<p class="wp-block-paragraph"><strong>ArrayList kullanın:</strong></p>



<p class="wp-block-paragraph">Veri üzerinde sık sık random erişim yapılıyorsa</p>



<p class="wp-block-paragraph">Liste boyutu çok sık değişmiyorsa</p>



<p class="wp-block-paragraph">Elemanlar genellikle sona ekleniyorsa</p>



<p class="wp-block-paragraph">Bellek kullanımı önemliyse</p>



<p class="wp-block-paragraph"><strong>LinkedList kullanın:</strong></p>



<p class="wp-block-paragraph">Sık sık eleman ekleme/silme işlemi yapılıyorsa</p>



<p class="wp-block-paragraph">Liste başına veya ortasına sık ekleme yapılıyorsa</p>



<p class="wp-block-paragraph">Liste boyutu sürekli değişiyorsa</p>



<p class="wp-block-paragraph">Random erişim ihtiyacı yoksa</p>



<figure class="wp-block-image size-full"><img decoding="async" width="945" height="289" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-19.png" alt="" class="wp-image-208" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-19.png 945w, https://www.alperergun.site/wp-content/uploads/2026/05/image-19-300x92.png 300w, https://www.alperergun.site/wp-content/uploads/2026/05/image-19-768x235.png 768w" sizes="(max-width: 945px) 100vw, 945px" /></figure>



<p class="wp-block-paragraph"><strong>30) </strong><strong>Error ile Exception arasındaki fark nedir?</strong></p>



<p class="wp-block-paragraph">Error yakalayamadığımız hatalardır, Exception try- Catch ile yakalayabildiğimiz ve kontrol edebildiğimiz hatalardır.</p>



<p class="wp-block-paragraph"><strong>31) Java&#8217;da Abstraction (Soyutlama) Nedir?</strong></p>



<p class="wp-block-paragraph">Eğer bir sınıf için nesne üretmek mantıksız geliyorsa o sınıf soyutlanabilir. Alt sınıfların ortak özelliklerini ve işlevlerini taşıyan ancak henüz bir nesnesi olmayan bir üst sınıf oluşturmak istenirse bir soyut (abstract) üst sınıf oluşturulur.</p>



<p class="wp-block-paragraph">Soyutlama, bir sınıfa veya metoda temel görevlerin tanımlanması, detayların ise tanımlanmaması demektir. Temel olarak bir soruna ait çözüme giderken kullanılacak yöntemlerin, ilk etapta daha genel basit ve soyut bir tanımını yapmaktır.</p>



<p class="wp-block-paragraph">Abstraction, programlamada karmaşıklığı azaltmak ve gereksiz ayrıntıları gizlemek için kullanılan bir tekniktir. <strong>Örnek:</strong> Bir <strong>araba</strong> kullanırken motorun iç işleyişini bilmeden, sadece <strong>direksiyon, gaz ve fren pedalını</strong> kullanarak sürersin. İşte bu <strong>soyutlama</strong>dır! Araba, karmaşık detayları gizleyerek kullanıcıya <strong>sade bir arayüz</strong> sunar. Java&#8217;da abstraction, bir nesnenin ne yaptığına odaklanıp, nasıl yaptığını gizlemek anlamına gelir. Bu, kullanıcıya yalnızca gerekli olan özellikleri veya davranışları gösterirken, uygulama ayrıntılarını saklar. Javada Abstraction(Soyutlama) tanımlayacağımız nesnenin istediğimiz gerekli olan özelliklerini tanımlama olanağı sağlayıp istemediğimiz özellikleri göz ardı etmemize yarayan kodlama yöntemdir. Kısacası Javada Abstraction(Soyutlama) yapısı bizlere kod kalabalığını önleyen bir kodlama yöntemidir.</p>



<p class="wp-block-paragraph">Java&#8217;da abstraction, temel olarak iki şekilde gerçekleştirilir:</p>



<p class="wp-block-paragraph">Abstract Class (Soyut Sınıf) kullanarak.</p>



<p class="wp-block-paragraph">Interface (Arayüz) kullanarak.</p>



<p class="wp-block-paragraph"><strong>Soyut Sınıf Özellikleri:</strong></p>



<ul class="wp-block-list">
<li>&#8220;abstract&#8221; anahtar kelimesi ile tanımlanmış olması gerekiyor.</li>



<li>Soyut veya soyut olmayan fonksiyonlar tanımlanabilir.</li>



<li>Soyut sınıflardan &#8220;new&#8221; anahtar kelimesi ile nesne oluşturulamaz.</li>



<li>Kurucu metodu ve static fonksiyonlar tanımlanabilir.</li>



<li>&#8220;final&#8221; kelimesi ile tanımlanmış fonksiyonları içerebilir. Bu final fonksiyonlar alt sınıflarda ezilemezler (override).</li>
</ul>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>JAVA Temel Kavramlar</title>
		<link>https://www.alperergun.site/java-temel-kavramlar/</link>
		
		<dc:creator><![CDATA[ae_5206]]></dc:creator>
		<pubDate>Fri, 08 May 2026 17:10:16 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.alperergun.site/?p=168</guid>

					<description><![CDATA[Java Programının Çalışma Mantığı: Programcı Java kodunu yazar. “.java” dosyası olarak kaydedilir.. Bu kod Java derleyicisi (eclipse vb.) ile derlenir. Sonuçta bytekod adı verilen (“.class” uzantılı) bir tür makine kodu ortaya çıkar. Platform bağımsızlığını sağlayan şey bytecode’ dur. Çünkü bir kere bytecode oluştuktan sonra yazılım sanal makine içeren tüm işletim sistemlerinde (Windows, Linux vb.) çalışabilir. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Java Programının Çalışma Mantığı:</strong></p>



<figure class="wp-block-image size-full"><img decoding="async" width="787" height="480" src="https://www.alperergun.site/wp-content/uploads/2026/05/image.png" alt="" class="wp-image-169" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image.png 787w, https://www.alperergun.site/wp-content/uploads/2026/05/image-300x183.png 300w, https://www.alperergun.site/wp-content/uploads/2026/05/image-768x468.png 768w" sizes="(max-width: 787px) 100vw, 787px" /></figure>



<p class="wp-block-paragraph">Programcı Java kodunu yazar. “.java” dosyası olarak kaydedilir.. Bu kod Java derleyicisi (eclipse vb.) ile derlenir. Sonuçta bytekod adı verilen (“.class” uzantılı) bir tür makine kodu ortaya çıkar. Platform bağımsızlığını sağlayan şey bytecode’ dur. Çünkü bir kere bytecode oluştuktan sonra yazılım sanal makine içeren tüm işletim sistemlerinde (Windows, Linux vb.) çalışabilir.</p>



<p class="wp-block-paragraph">Java Virtual Machine (Sanal Java Makinesi) adım adım bytecode’ ları işletir.</p>



<p class="wp-block-paragraph">Java Sun Microsystem mühendislerinden James Goslig tarafından 1996 yılında geliştirilmeye başlamış; &nbsp;&nbsp;&#8211; &nbsp;&nbsp;&nbsp;&nbsp;açık kodlu,</p>



<ul class="wp-block-list">
<li>nesneye yönelik,</li>



<li>platformdan (işletim sisteminden) bağımsız,</li>



<li>yüksel performanslı,</li>



<li>Adım adım işletilen (interpreted) bir dildir.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="605" height="197" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-1.png" alt="" class="wp-image-170" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-1.png 605w, https://www.alperergun.site/wp-content/uploads/2026/05/image-1-300x98.png 300w" sizes="auto, (max-width: 605px) 100vw, 605px" /></figure>



<p class="wp-block-paragraph">Java, Nesne Yönelimli (Object – Oriented) bir dildir. Nesne Yöenlimli, bir düşünce şeklidir. Projedeki herşeyi nesneye yönelik olarak madelleriz. Herşey bir nesne olarak kabul edilir. İçerisinde bilgi saklayan herşey Nesneye dönüştürme potansiyeline sahiptir.</p>



<p class="wp-block-paragraph">Java projesini nesneye yönelik modellemek programcının yeteneğine bağlıdır. Burada önemli olan nesneler arasındaki ilişkiyi modellemekdir. Örneğin kedi bir hayvan türüdür. Burada kedinin taşıması gereken özellikler (ismi, cinsi, kilso vb.) vardır. Yani kedi bir class dır, Nesneler ise kedi den türetilen özelliklerdir.</p>



<p class="wp-block-paragraph">Örneğin Banka otomasyon projesi düşünelim. Burada müşteri bir bankanın unsurudur, varlıktır. Class’ lar; tür, unsur tanımı yapılan yerlerdir. Nesneler ise o türden, tanımdan yaşayan örneklerdir.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="728" height="423" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-2.png" alt="" class="wp-image-171" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-2.png 728w, https://www.alperergun.site/wp-content/uploads/2026/05/image-2-300x174.png 300w" sizes="auto, (max-width: 728px) 100vw, 728px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="527" height="257" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-3.png" alt="" class="wp-image-172" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-3.png 527w, https://www.alperergun.site/wp-content/uploads/2026/05/image-3-300x146.png 300w" sizes="auto, (max-width: 527px) 100vw, 527px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="701" height="356" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-4.png" alt="" class="wp-image-173" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-4.png 701w, https://www.alperergun.site/wp-content/uploads/2026/05/image-4-300x152.png 300w" sizes="auto, (max-width: 701px) 100vw, 701px" /></figure>



<p class="wp-block-paragraph">Java’ da veri türleri 2’ ye ayrılır:</p>



<ol class="wp-block-list">
<li>İlker Veri Türleri: byte, short, int, long, float, double, char, boolean</li>



<li>İlkel Olmayan Veri Türleri: String, Arrays(Diziler), Class (Sınıflar)</li>
</ol>



<p class="wp-block-paragraph">Arasındaki Farklar:&nbsp;</p>



<ul class="wp-block-list">
<li>İlke veri türleri Java’ da önceden tanımlanmıştır. İlkel olmayan veri türleri programcı tarafından oluşturur, Java tarafından tanımlanmaz (String hariç).</li>



<li>İlkel veri türleri fonksiyonları çağırmak için kullanılmaz. İlkel olmayan veri türleri belirli işlemeleri gerçekleştirme yöntemlerini çağırmak için kullanılabilir.</li>



<li>İlkel olmayan veri türleri Büyük harfle başlar</li>
</ul>



<p class="wp-block-paragraph"><strong>DİZELER</strong></p>



<p class="wp-block-paragraph">Dizeler, metin depolamak için kullanılır. Bir dize, çift tırnak işareti içine alınmış bir karakter koleksiyonu içerir. Dizler karakter dizisidir.</p>



<p class="wp-block-paragraph">String metin = “Merhaba”&nbsp; ;</p>



<p class="wp-block-paragraph">İnt x = metin.length() ;</p>



<p class="wp-block-paragraph">System.out.println(“ metin’ in uzunluğu : “ + x );</p>



<p class="wp-block-paragraph">Length(): Dizenin(metnin) karakter(eleman) sayısını verir. Boşluklarıda sayar.</p>



<p class="wp-block-paragraph">Trim(): Dizenin başındaki ve sonundaki boşlukları siler.</p>



<p class="wp-block-paragraph">toUpperCase(): Dizedeki tüm harfleri büyük harflere çevirir.</p>



<p class="wp-block-paragraph">toLowerCase(): Dizedeki tüm harfleri küçük harflere çevirir.</p>



<p class="wp-block-paragraph">indexOf(): Dize içerisinde bir dize bulmamızı sağlar. Boşlukta dahil olmak üzere bi dizr içinde belirtilen bir metnin ilk konumunu söyler.</p>



<p class="wp-block-paragraph">charAT(n): Dize içinde n. Elemanı(karakteri) bulur.</p>



<p class="wp-block-paragraph">Substring(): tanımlanan indis numarasından sonra ekrana yazdırma işlemini gerçekleştirir. Parametre kullanırken başlangıç ve bitiş indis değerlerini substring(parametre1, parametre2) şeklinde belirtirsek girilen indis aralığındaki metni alır.</p>



<p class="wp-block-paragraph">Concat(): 2 dizeyi birleştirmek için kullanılır.</p>



<p class="wp-block-paragraph">startsWith(): Metin’ in ilk karakterini kontrol eder. True or False değeri döndürür. Büyük – küçük harf duyarlıdır.</p>



<p class="wp-block-paragraph"><strong>Örnek:</strong></p>



<p class="wp-block-paragraph">String txt = “merhaba, java öğreniyorum” ;</p>



<p class="wp-block-paragraph">System.out.println(txt.toUpperCase());&nbsp; // MERHABA, JAVA ÖĞRENİYORUM</p>



<p class="wp-block-paragraph">System.out.println(txt.toLowerCase());&nbsp; // merhaba, java öğreniyorum</p>



<p class="wp-block-paragraph">System.out.println(txt.indexOf(“java”));&nbsp; // 10</p>



<p class="wp-block-paragraph">System.out.println(txt.startsWith(“m”));&nbsp;&nbsp; // true</p>



<p class="wp-block-paragraph">NOT: Dizeleri birleştirmek için “+” operatörü kullanılır.</p>



<p class="wp-block-paragraph"><strong>DÖNGÜLER</strong></p>



<p class="wp-block-paragraph">WHİLE</p>



<p class="wp-block-paragraph"><strong>While (condition) {&nbsp; </strong>code block to be executed<strong>&nbsp; }</strong><strong></strong></p>



<p class="wp-block-paragraph"><strong>Örnek:</strong></p>



<p class="wp-block-paragraph">İnt İ = 0 ;</p>



<p class="wp-block-paragraph">While (i&lt;5) {&nbsp;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(i);</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp; İ++ ;</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">DO / WHİLE</p>



<p class="wp-block-paragraph">Bu döngü koşulun doğru olupp olmadığını kontrol etmeden önce kod bloğunu bir kez yürütür, ardından koşul doğru olduğu sürece döngüyü tekrarlar.</p>



<p class="wp-block-paragraph"><strong>Do {</strong>&nbsp;&nbsp;&nbsp; // kod bloğu</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>} While (condition)</strong></p>



<p class="wp-block-paragraph"><strong>Örnek:</strong></p>



<p class="wp-block-paragraph">İnt i = 0 ;</p>



<p class="wp-block-paragraph">Do { System.out.ptrintln(i);</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; İ++ ;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp; } while(i&lt;5);</p>



<p class="wp-block-paragraph">FOR</p>



<p class="wp-block-paragraph"><strong>For(int i =0; i&lt;n; i++) {</strong></p>



<p class="wp-block-paragraph"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // </strong>code block to be executed<strong></strong></p>



<p class="wp-block-paragraph"><strong>}</strong></p>



<p class="wp-block-paragraph"><strong>DİZİLER(ARRAYS)</strong></p>



<p class="wp-block-paragraph">Diziler, her bir değer için ayrı değişkenler bildirmek yerine, tek bir değişkene birden fazla değer depolamak için kullanılır.</p>



<p class="wp-block-paragraph">String[] adlar = {“Engin”, “Ali”, “Ece”};</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Veya</p>



<p class="wp-block-paragraph">String[] adlar = new String[3];</p>



<p class="wp-block-paragraph">adlar[0] = “Engin”;</p>



<p class="wp-block-paragraph">adlar[1] = “Ali”;</p>



<p class="wp-block-paragraph">adlar[2] = “Ece”;</p>



<p class="wp-block-paragraph"><strong>Örnek:</strong></p>



<p class="wp-block-paragraph">String [] Araba = { “Volvo”, “BMW”, “Ford”, “Skoda” };</p>



<p class="wp-block-paragraph">Araba [0] = “Volvo”;</p>



<p class="wp-block-paragraph">Araba [1] = “BMC” ;</p>



<p class="wp-block-paragraph">Araba [2] = “Ford” ;</p>



<p class="wp-block-paragraph">Araba [3] = “Skoda” ;</p>



<p class="wp-block-paragraph">Length:&nbsp; Bir dizinin kaç elemanı olduğunu bulmak için kullanılır.</p>



<p class="wp-block-paragraph"><strong>Dizilerde Döngü Kullanımı:&nbsp;&nbsp;&nbsp; For-Each()</strong></p>



<p class="wp-block-paragraph">String [] Araba = { “Volvo”, “BMW”, “Ford”, “Skoda” };</p>



<p class="wp-block-paragraph">For (int i = 0; i&lt;Araba.length; i++) {&nbsp;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.prinln(Araba[i]);</p>



<p class="wp-block-paragraph"><strong>For (type variable: arrayname) { </strong>code block to be executed&nbsp; <strong>}</strong></p>



<p class="wp-block-paragraph"><strong>Örnek:</strong></p>



<p class="wp-block-paragraph">String [] Araba = { “Volvo”, “BMW”, “Ford”, “Skoda” };</p>



<p class="wp-block-paragraph">For (String i:Araba) {&nbsp;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(i);</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph"><strong>Örnek:</strong> Dizideki elemanların toplamını bulan program.</p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>class</strong> Main {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>public</strong> <strong>static</strong> <strong>void</strong> main(String[] args) {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>double</strong>[] mylist = {1.2,1.3,4.3,5.6} ;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>double</strong> total = 0 ;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>for</strong> (<strong>double</strong> i:mylist) {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; total = total +i;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.<strong><em>out</em></strong>.println(i);</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.<strong><em>out</em></strong>.println (&#8220;Toplam = &#8221; + total);</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph"><strong>Çok Boyutlu Diziler:</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="622" height="247" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-5.png" alt="" class="wp-image-179" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-5.png 622w, https://www.alperergun.site/wp-content/uploads/2026/05/image-5-300x119.png 300w" sizes="auto, (max-width: 622px) 100vw, 622px" /></figure>



<p class="wp-block-paragraph">String [][] sehirler = new String [2][2];</p>



<p class="wp-block-paragraph">sehirler[0][0] = “İstanbul” ;</p>



<p class="wp-block-paragraph">sehirler[0][1] = “Bursa” ;</p>



<p class="wp-block-paragraph">sehirler[1][0] = “Kocaeli” ;</p>



<p class="wp-block-paragraph">sehirler[1][1] = “Ankara” ;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; veya</p>



<p class="wp-block-paragraph">String [][] sehirler = {{“İstanbul”,”Bursa”},{“Kocaeli”,”Ankara”}};</p>



<p class="wp-block-paragraph"><strong>NOT: </strong>Çok boyutlu diziler Matris yapılarında daha çok kullanılır.</p>



<p class="wp-block-paragraph"><strong>Örnek:</strong> Çok boyutlu dizileri yazdırma.</p>



<p class="wp-block-paragraph">String [][] sehirler = {{“İstanbul”,”Bursa”,”Adana”},{“Kocaeli”,”Ankara”,”Konya”}};</p>



<p class="wp-block-paragraph">for (int i = 0;i&lt;sehirler.length;i++){&nbsp;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; for(int j=0; j&lt;sehirler[i].length;j++){</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(sehirler[i][j]);</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; }</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph"><strong>METHODLAR (FONKSİYONLAR)</strong></p>



<p class="wp-block-paragraph">Fonksiyon(Metod) yalnızca çağrıldığında çalışan bir kod bloğudur. Parametre olarak bilinen verileri bir fonksiyona aktarabiliriz.</p>



<p class="wp-block-paragraph">Public class myclass {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp; Public static void myfunction() {&nbsp; kod bloğu&nbsp; }&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">}</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="682" height="256" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-6.png" alt="" class="wp-image-181" style="width:682px;height:auto" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-6.png 682w, https://www.alperergun.site/wp-content/uploads/2026/05/image-6-300x113.png 300w" sizes="auto, (max-width: 682px) 100vw, 682px" /></figure>



<p class="wp-block-paragraph">Fonksiyonla ile bir kod bloğunu çok defa yazmaya veya bir kod bloğunda değişiklikleri birçok defa yapmaya gerek kalmaz. Fonksiyonlar sayesinde programımızı küçük parçalar halinde yazabilir ve bu parçaları birleştirebiliriz.</p>



<p class="wp-block-paragraph">Fonksiyonlar bizim ana programımızı yöneten main() fonksiyonunun yükünü azaltır.</p>



<p class="wp-block-paragraph"><strong>Örnek:</strong></p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>class</strong> Method {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>static</strong> <strong>int</strong> topla(<strong>int</strong> x,<strong>int</strong> y) {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>return</strong> x+y;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; }</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>public</strong> <strong>static</strong> <strong>void</strong> main(String[] args) {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>int</strong> z = <em>topla</em>(5,3);</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.<strong><em>out</em></strong>.println(z);</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>



<p class="wp-block-paragraph">}</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="618" height="186" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-7.png" alt="" class="wp-image-182" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-7.png 618w, https://www.alperergun.site/wp-content/uploads/2026/05/image-7-300x90.png 300w" sizes="auto, (max-width: 618px) 100vw, 618px" /></figure>



<p class="wp-block-paragraph"><strong>Örnek:</strong></p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>class</strong> Method {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>public</strong> <strong>static</strong> <strong>int</strong> topla(<strong>int</strong>&#8230;sayilar) {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>int</strong> toplam =0;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>for</strong> (<strong>int</strong> sayi:sayilar) {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; toplam = toplam +sayi;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>return</strong> toplam;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; }</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>public</strong> <strong>static</strong> <strong>void</strong> main(String[] args) {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>int</strong> toplam = <em>topla</em>(2,3,9,5);</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.<strong><em>out</em></strong>.println(toplam);</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph"><strong>Mülakat Sorusu: </strong>Java Pass-By-Value mudur Pass – By-Reference midir?</p>



<p class="wp-block-paragraph">Java Dili Pass – By- Value’ dur. Çünkü bir methoda parametre olarak bir değişkenin ya da bir instance değişkenin referansı parametre olarak verilmez. Kendisi parametre olarak verilir. Yani Java da metot a değişkenin kendisi verilir.</p>



<p class="wp-block-paragraph"><strong>Mülakat Sorusu: </strong>Eşittir (=) ile equals()’ ın Farkı Nedir?</p>



<p class="wp-block-paragraph">=(Eşittir) primitive(ilkel) değişkneler için kullanılır. Equals() Nan-primitive tipleri karşılaştırır.</p>



<p class="wp-block-paragraph"><strong>JAVA DA SINIF (CLASS) VE NESNE YAPISI</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="602" height="275" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-8.png" alt="" class="wp-image-183" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-8.png 602w, https://www.alperergun.site/wp-content/uploads/2026/05/image-8-300x137.png 300w" sizes="auto, (max-width: 602px) 100vw, 602px" /></figure>



<p class="wp-block-paragraph"><strong>UYARI:</strong> Sınıf (class) adı ile dosya adı aynı olmak zorundadır.</p>



<p class="wp-block-paragraph">Sınıf (class) demek OOP(Nesne Yönelimli Program) demektir.</p>



<p class="wp-block-paragraph">Sınıflar, nesnelerimiz için genel özellikler tanımladığımız yapılardır.</p>



<p class="wp-block-paragraph">Sınıf ( class) soyut bir veri tipidir. (Nesne(Object) sınıf kavramını soyutlaştırır. Örneğin kedi bir türdür yani bir sınıftır. Ama evde beslediğimiz kediyi bu sınıfın bir nesnesi olarak düşünebiliriz.</p>



<p class="wp-block-paragraph">Kedi Sınıfı :&nbsp;&nbsp; Mayıs, Mırmır, Minti (Kedi sınıfının nesneleridir).</p>



<p class="wp-block-paragraph">Bir Java sınıfı kendi özelliklerini belirleyen, değişkenleri ve fonksiyonları içeren bir birimdir.</p>



<p class="wp-block-paragraph">Java programları class lardan oluşur. Bütün sınıflar aynı yapıya sahiptir. Aralarındaki fark içerdikleri değişkenler ve metodlardır.</p>



<p class="wp-block-paragraph">Bir sınıftaki değişkenler o sınıfın niteliklerini, metodlar ise o sınıfın davranışlarını belirler.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="422" height="108" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-9.png" alt="" class="wp-image-184" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-9.png 422w, https://www.alperergun.site/wp-content/uploads/2026/05/image-9-300x77.png 300w" sizes="auto, (max-width: 422px) 100vw, 422px" /></figure>



<p class="wp-block-paragraph">Sınıf yapısı büyük bir kod bloğunu gruplamamızı, bu sayede kodlara kolay ulaşmamızı sağlar.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="643" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-10-1024x643.png" alt="" class="wp-image-185" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-10-1024x643.png 1024w, https://www.alperergun.site/wp-content/uploads/2026/05/image-10-300x188.png 300w, https://www.alperergun.site/wp-content/uploads/2026/05/image-10-768x482.png 768w, https://www.alperergun.site/wp-content/uploads/2026/05/image-10.png 1050w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Nesne yönelimli programlamanın prosedürel programlamaya göre birçok avantajı vardır:</p>



<ul class="wp-block-list">
<li>OOP&#8217; un yürütülmesi daha hızlı ve kolaydır</li>



<li>OOP, programlar için net bir yapı sağlar</li>



<li>OOP, Java kodunun &#8220;Kendinizi Tekrar Etmeyin&#8221; kuru kalmasına yardımcı olur ve kodun bakımını, değiştirilmesini ve hata ayıklanmasını kolaylaştırır</li>



<li>OOP, daha az kod ve daha kısa geliştirme süresi ile tam yeniden kullanılabilir uygulamalar oluşturmayı mümkün kılar</li>
</ul>



<p class="wp-block-paragraph">Bir sınıf, nesneler için bir şablondur ve bir nesne bir sınıfın örneğidir.</p>



<p class="wp-block-paragraph">Tek tek nesneler oluşturulduğunda, sınıftaki tüm değişkenleri ve yöntemleri devralırlar.</p>



<p class="wp-block-paragraph"><strong>Final: </strong>Final anahtar kelimesi, her zaman aynı değer de kalmasını istediğimiz değişkenler için kullanılır. Örneğin Pİ sayısı(3.14159 &#8230;&nbsp;) gibi. Final olan Class’ lar extend edilemezler yani genişletilemezler. Final olan Metotlar Override edilemezler. Final olan bir field için ya başlangıç değeri verilmeli ya da constructionlarda ilk değer ataması yapılmalıdır.</p>



<h2 class="wp-block-heading"><strong>Static vs. Public</strong><strong></strong></h2>



<p class="wp-block-paragraph">Static fonksiyonlar(Methodlar), oluşturuldukları sınıfın nesnesini oluşturmadan erişebileceğimiz fonksiyonlardır. Public fonksiyonları çağırabilmemiz için, oluşturuldukları sınıfın bir nesnesini oluşturmamız gerekir.</p>



<p class="wp-block-paragraph"><strong>ENCAPSULATION (KAPSÜLLEME)</strong><strong></strong></p>



<p class="wp-block-paragraph">Her class(sınıf), özellik(attribute) yani field barındırır. Kapsülleme; dışardan erişilmesini istemediğimiz veya kimin erişmesini istediğimiz yapıya denir. Bu yapı erişim belirteçleri ile kullanılır. Yani Class içerisinde metot ve değişkenlerin erişimlerini belirleme ilkesidir.</p>



<p class="wp-block-paragraph">Kapsülleme, hassas verilerin kullanıcılardan gizlenmesini sağlar.</p>



<p class="wp-block-paragraph">Kapsülleme ile Sınıf özelliklerinin ve yöntemlerinin daha iyi kontrolü sağlanır.</p>



<p class="wp-block-paragraph"><strong>NOT:</strong> Main.java, Product.Java ve ProductMAnager.java aynı package’ da(Klasör’ de) yer almak zorundadır.</p>



<p class="wp-block-paragraph"><strong>ERİŞİM NİTELEYİCİLERİ</strong></p>



<ol class="wp-block-list">
<li><strong>Private</strong>: Sadece o sınıfın elemanları erişebilir.</li>



<li><strong>Protected</strong>: Paket içerisinden ve alt sınıflardan erişim izni vardır.</li>



<li><strong>Public</strong>: Bütün sınıflar erişebilir.</li>



<li><strong>Boş</strong>: Paket içinden erişime izin verilebilir.</li>
</ol>



<p class="wp-block-paragraph">Java Programında Kapsülleme ile değişkenlere doğrudan erişim engellenebilir. Private ile değişkenlerin diğer sınıflardan çağrılması veya ulaşılması engellenebilir. Bunun sebebi güvenliktir. Değişkenlere doğrudan erişim engellendiği için belli kurallar bütünüyle erişim sağlanabilir. Bu erişim Get ve Set metotlarıyla mümkün kılınmıştır.</p>



<p class="wp-block-paragraph">Public değişkenler kullanmak yerine, değişkenleri mümkün olduğunca private yapıp kodun içine GET ve Set metotları ekleyebiliriz.</p>



<p class="wp-block-paragraph">Get ve Set Metotları sınıfın iç yapısını görüntülü hale getirir.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="944" height="394" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-11.png" alt="" class="wp-image-186" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-11.png 944w, https://www.alperergun.site/wp-content/uploads/2026/05/image-11-300x125.png 300w, https://www.alperergun.site/wp-content/uploads/2026/05/image-11-768x321.png 768w" sizes="auto, (max-width: 944px) 100vw, 944px" /></figure>



<p class="wp-block-paragraph"><strong>Getter ve Setter ile Çalışmak</strong><strong>&nbsp;</strong></p>



<p class="wp-block-paragraph"><strong>Getter: </strong>Getirmek, almak. Get() metodu bir değer döndürmektedir. Böylece istediğimiz değişkenin değerine ulaşabiliriz.</p>



<p class="wp-block-paragraph"><strong>Setter:</strong> Planlamak, düzenlemek. Set() metodu değer döndürmez ama parametre alır. Böylece değişkenin değerini değiştirebiliriz.</p>



<p class="wp-block-paragraph"><strong>JAVA YAPICILARI (CONSTRUCTORS)</strong><strong>&nbsp;</strong></p>



<p class="wp-block-paragraph">Yapıcı (Constructor), bir metot(fonksiyon) çeşididir. Bazen bir fonksiyonu çağırmaya gerek kalmadan, bir sınıftan nesne oluşturduğumuz anda bazı işlemlerin yerine getirilmesini isteriz. Buna ihtiyaç duymamızın nedeni büyük çapta projelerde fazla koddan kurtulmaktır. Burada yapıcı metotlar devreye girer.</p>



<p class="wp-block-paragraph">Yapıcılar, nesne oluşturduğumuz anda çalıştırılan fonksiyonlardır. Amaç bir nesneyi ilk kullanımı hazırlamaktadır.</p>



<p class="wp-block-paragraph">Yapıcıların erişim durumu mutlaka “<strong>public</strong>” olmalıdır.</p>



<p class="wp-block-paragraph">Yapıcıların adı sınıf adıyla aynı olmalıdır.</p>



<p class="wp-block-paragraph">Yapıcılar çağrılırken “<strong>new</strong>” anahtar sözcüğü kullanılır.</p>



<p class="wp-block-paragraph"><strong>NOT:</strong> Yapıcılar, her nesnenin ilk üretildiği anda çalıştırılan fonksiyonlardır.<strong></strong></p>



<p class="wp-block-paragraph"><strong>NOT: </strong>Yapıcılar da(Yapıcı methodlarda), return olmaz. Void özelliği gibi düşün.<strong></strong></p>



<p class="wp-block-paragraph"><strong>KALITIM (ALT SINIF – ÜST SINIF) – İNHERİTANCE</strong></p>



<p class="wp-block-paragraph">Bir sınıftan miras(kalıtım) almak için “extends” anahtar sözcüğü kullanılır.</p>



<p class="wp-block-paragraph"><strong>Alt sınıf(alt):</strong> Başka bir sınıftan miras alan sınıf.</p>



<p class="wp-block-paragraph"><strong>Superclass(parent):</strong> Miras alınan sınıf(Üst sınıf)</p>



<p class="wp-block-paragraph">Kalıtım(miras) yapısı, kodun tekrar kullanılabilirliği için faydalıdır. Yeni bir sınıf oluştururken mevcut bir sınıfın özelliklerini ve yöntemlerini yeniden kullanmamızı sağlar.</p>



<p class="wp-block-paragraph"><strong>NOT:</strong> Kalıtım(miras), sınıflardaki ortak özellikleri ve metotları tekrar tekrar yazmamızı engeller yani kod kalabalığını engeller.</p>



<h1 class="wp-block-heading"><strong>Overriding ve Overloading Farkı: </strong>En temel fark Metot un imzası değişir.</h1>



<ul class="wp-block-list">
<li>Overloading, aynı isme sahip metodların farklı sayıda ve türde parametre alarak yeniden yazılmış halidir. Örneğin aynı isme sahip 3 metodumuz var. Birinde tek parametre, 2.sinde 2 parametre, üçüncüsünde 3 parametre alabilmektedir. Yani Metot un imzası değişir.</li>



<li>Overriding, iki farklı class da aynı metod varken, birbirinden extend yani kalıtım ile kullanılıp aynı metodun içinin farklı olması anlamına gelir.</li>
</ul>



<p class="wp-block-paragraph">Örneğin, Çarpma işlemi yapan bir metod düşünelim. 1. çarpma işleminde 2 int değer, diğer metot da 3 float değer, başka bir çarpma&nbsp; metot unda 4 double değeri çarpabiliriz. Her çarpma işlemi için aynı isimde bir metot kullanabiliriz. Bu OverLoading’ dir.</p>



<p class="wp-block-paragraph">Overridding; bir üst class daki çarpma metodunu, içindeki argümanları değiştirmeden aynı argümanlarla çağırıp kullanmaktır. Bu halde metot un imzası değişmez.</p>



<p class="wp-block-paragraph"><strong>POLİMORFİZM (ÇOK BİÇİMLİLİK)</strong></p>



<p class="wp-block-paragraph">Bir nesnenin çok şekilli olarak kullanılabilmesidir. Bir sınıfı(classı) birden fazla şekilde parametre kabul edebilecek veya birden fazla şekilde cevap verebilecek şekilde program yapabilmemizi sağlar. Örneğin aynı isme sahip fonksiyonları istediğimiz kadar yazabiliriz. Şartımız fonksiyonun tipi veya parametresi değişecek.</p>



<p class="wp-block-paragraph">Overriding inheritance olduğunda söz konusu olur yani faklı class daki aynı metodlardan bahsedilir. Overloading aynı class içerisinde isimleri aynı 2 metod varken kullanılır.</p>



<p class="wp-block-paragraph"><strong>ABSTRACT(SOYUTLAMA) SINIFLAR</strong></p>



<p class="wp-block-paragraph">Ortak özellikleri olan nesneleri modellemek için Java dilinde&nbsp;<strong>abstract(soyut-belirsiz-muğlak) sınıflar</strong>&nbsp;kullanır. Soyut sınıflar oluşturulurken class ismi yerine “abstract class” kelimeleri kullanılır.</p>



<p class="wp-block-paragraph">Soyut(abstract) sınıfı <strong>extend</strong> eden sınıf, soyut sınıfın tüm soyut metotlarını <strong>override</strong> etmek zorundadır.</p>



<p class="wp-block-paragraph">Soyut(abstract) sınıfların içerisindeki soyut metotların gövdesi boş olması gerekir(Kullanılacak yere göre işlem farklılığı olacağından.)Ama soyut olmayan metotların gövdeleri olmak zorundadır.<strong></strong></p>



<p class="wp-block-paragraph">Soyut sınıflar private olarak tanımlanamazlar. Çünkü kalıtım özelliğini her daim göstermek zorundadır(Zaten soyut sınıfların sihri bu).</p>



<h3 class="wp-block-heading">Soyut sınıflar new’ lenemez.</h3>



<h3 class="wp-block-heading">Gövdesi olmayan metoda Abstract Method denir.</h3>



<h3 class="wp-block-heading">Java’da Soyutlama (Abstraction) Avantajları</h3>



<ul class="wp-block-list">
<li>Kod yinelemesini önler ve kodun yeniden kullanılabilirliğini sağlar.</li>



<li>Kullanıcıya yalnızca gerekli ayrıntılar verildiği için bir uygulama veya programın güvenliğini artırmaya yardımcı olur.</li>



<li>Kodlardaki karmaşıklığı azaltır.</li>
</ul>



<p class="wp-block-paragraph"><strong>INTERFACE(ARAYÜZ)</strong></p>



<p class="wp-block-paragraph"><strong>Interface kavramı </strong>abstract class kavramına benzerlik gösterir. <strong>Javada Çoklu Kalıtım Yapılamaz yani bir sınıf birden fazla sınıfı extends ile miras alamaz.</strong>&nbsp;Çoklu kalıtım yapabilmek için Arayüzleri (Interfaces) veya dahili sınıfları kullanırız &nbsp;(Abstract ile interfaces farkı). İnterfaces daha genel şeyleri kapsar(Boy: insan, bina, hayvan filan), Abstract daha birbirine bağlantılı şeyleri kapsar.(Yemek():insan ,hayvan bu kadar.)</p>



<p class="wp-block-paragraph">Arayüzler (Interfaces) daha kullanışlı ve daha farklıdır.</p>



<p class="wp-block-paragraph">Arayüzler, “interface” anahtar kelimesi ile tanımlanır.</p>



<p class="wp-block-paragraph">Erişim belirtkesi ya public olur ya da hiç olmaz. Abstract’ lar private, protected değişken içerebilir.</p>



<p class="wp-block-paragraph">Arayüzde sadece default ve static metodlar içerir.</p>



<p class="wp-block-paragraph">Arayüz public olarak nitelenmişse içerisindeki tüm metot ve değişkenler otomatikten public olur.</p>



<p class="wp-block-paragraph">Arayüzde yer alan tüm metotlar gövdesizdir yani abstract metotlar yer alır.</p>



<p class="wp-block-paragraph">Arayüzde yazılan metotlar gövdesiz olduğu için yaptıkları iş belli değildir.</p>



<p class="wp-block-paragraph">Değişkenleri genellikle final ve static olur çağıran sınıf değişkenleri direkt kullanır değerlerini değiştiremez. Abstract’ lar private, protected değişken içerebilir.</p>



<p class="wp-block-paragraph">En güzel özelliği bir sınıfın birden fazla arayüzü&nbsp;<strong>implements</strong>&nbsp;ederek kullanabilmesidir.</p>



<p class="wp-block-paragraph">Programlarımız üzerinde temel olarak kalıtım işlemini bir sınıf üzerinde&nbsp;<strong>birden fazla kalıtım</strong>&nbsp;gerçekleştirmek istiyoruz veya&nbsp;<strong>DRY</strong>&nbsp;(Don’t Repeat Yourself) prensibini kullanarak doğru bir kod dizisi yazmak istediğimiz zaman, yazdığımız koda esneklik, kod okunabilirliğini arttırmak istediğimiz zaman Java Interface kullanmamız gerekmektedir diyebiliriz.</p>



<p class="wp-block-paragraph"><strong>Enums</strong></p>



<p class="wp-block-paragraph">Java dilinde Enum türleri önceden tanımlanmış sabit değerleri ifade etmede kullanılır. Örneğin gün, ay, renk, yön isimleri gibi. Enum türler dışarıdan new operatörü ile türetilemezler. Enumlar içinde yazılan yapıcı metotlar sadece enum sabitleri tarafından çağırılabilirler.</p>



<p class="wp-block-paragraph"><strong>Java’da enum kavramı</strong>&nbsp;oluşturmuş olduğum programın okunabilirlik düzeyini arttırır ve sağlamış olduğu&nbsp;<strong>tip güvenliği</strong>&nbsp;ile daha stabil bir altyapı oluşturmaya olanak sağlar.&nbsp;<strong></strong></p>



<p class="wp-block-paragraph">Bir enum, bir class gibi niteliklere ve methodlara sahip olabilir. Enum sabitleri otomatik olarak static ve final tanımlanırlar, yaratıldıktan sonra değiştirilemezler.<strong></strong></p>



<p class="wp-block-paragraph"><strong>ARRAYLİST(KOLEKSİYONLAR)</strong></p>



<p class="wp-block-paragraph">Java ArrayList sınıfı öğeleri depolamak için dinamik bir dizi kullanır. Normal bir dizi gibidir fakat boyut sınırı yoktur. İstenildiği zaman öğe eklenir veya öğe silinebilir. Bu sayede&nbsp; esnek bir yapıya sahiptir.</p>



<p class="wp-block-paragraph">Yerleşik bir dizi ile&nbsp;<code>ArrayList </code>Java&#8217;daki&nbsp;bir dizi arasındaki fark&nbsp;, bir dizinin boyutunun değiştirilememesidir (bir diziye eleman eklemek veya diziden eleman çıkarmak istiyorsanız, yeni bir tane oluşturmanız gerekir).&nbsp;Öğeler,&nbsp;<code>ArrayList’ </code><code>e</code><code> </code>istediğiniz zaman&nbsp;eklenebilir ve çıkarılabilir.</p>



<p class="wp-block-paragraph"><strong>Java USER INPUT (Scanner)</strong></p>



<pre class="wp-block-preformatted">import<code> </code>java.util.Scanner;<code>&nbsp; </code>// Import the Scanner class<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted">class<code> </code>Main<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>public<code> </code>static<code> </code>void<code> </code>main(String[]<code> args</code>)<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>Scanner<code> myObj </code>=<code> </code>new<code> </code>Scanner(System.<code>in</code>);<code>&nbsp; </code>// Create a Scanner object<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>System.<code>out</code>.println("Enter username");<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>String<code> userName </code>=<code> myObj</code>.nextLine();<code>&nbsp; </code>// Read user input<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>System.<code>out</code>.println("Username is: "<code> </code>+<code> userName</code>);<code>&nbsp; </code>// Output user input<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>}<code></code></pre>



<pre class="wp-block-preformatted">}</pre>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="547" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-12-1024x547.png" alt="" class="wp-image-197" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-12-1024x547.png 1024w, https://www.alperergun.site/wp-content/uploads/2026/05/image-12-300x160.png 300w, https://www.alperergun.site/wp-content/uploads/2026/05/image-12-768x410.png 768w, https://www.alperergun.site/wp-content/uploads/2026/05/image-12.png 1051w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong>Örnek: </strong>user input – scanner programı<strong></strong></p>



<pre class="wp-block-preformatted">import<code> </code>java.util.Scanner;<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted">class<code> </code>Main<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>public<code> </code>static<code> </code>void<code> </code>main(String[]<code> args</code>)<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>Scanner<code> myObj </code>=<code> </code>new<code> </code>Scanner(System.<code>in</code>);<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>System.<code>out</code>.println("Enter name, age and salary:");<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>// String input<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>String<code> name </code>=<code> myObj</code>.nextLine();<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>// Numerical input<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>int<code> age </code>=<code> myObj</code>.nextInt();<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>double<code> salary </code>=<code> myObj</code>.nextDouble();<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>// Output input by user<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>System.<code>out</code>.println("Name: "<code> </code>+<code> name</code>);<code> </code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp;&nbsp;</code>System.<code>out</code>.println("Age: "<code> </code>+<code> age</code>);<code> </code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp;&nbsp;</code>System.<code>out</code>.println("Salary: "<code> </code>+<code> salary</code>);<code> </code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;</code>}<code></code></pre>



<pre class="wp-block-preformatted">}</pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="293" height="243" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-13.png" alt="" class="wp-image-198"/></figure>



<p class="wp-block-paragraph">JAVA DATE İşlemleri</p>



<p class="wp-block-paragraph">Java&#8217;nın yerleşik bir Tarih sınıfı yoktur, ancak&nbsp;<code>java.time</code>paketi tarih ve saat API&#8217;sı ile çalışacak şekilde içe aktarabiliriz.&nbsp;Paket birçok tarih ve saat sınıfı içerir.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="978" height="247" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-14.png" alt="" class="wp-image-199" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-14.png 978w, https://www.alperergun.site/wp-content/uploads/2026/05/image-14-300x76.png 300w, https://www.alperergun.site/wp-content/uploads/2026/05/image-14-768x194.png 768w" sizes="auto, (max-width: 978px) 100vw, 978px" /></figure>



<p class="wp-block-paragraph"><strong>Geçerli Tarih için:</strong></p>



<p class="wp-block-paragraph">Geçerli tarihi görüntülemek&nbsp;<code>java.time.LocalDate</code>için sınıfı içe aktarın ve&nbsp;<code>now()</code>yöntemini kullanabiliriz.</p>



<p class="wp-block-paragraph">Örnek:</p>



<pre class="wp-block-preformatted">import<code> </code>java.time.LocalDate;<code> </code>// import the LocalDate class<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted">public<code> </code>class<code> </code>Main<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>public<code> </code>static<code> </code>void<code> </code>main(String[]<code> args</code>)<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>LocalDate<code> myObj </code>=<code> </code>LocalDate.now();<code> </code>// Create a date object<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>System.<code>out</code>.println(<code>myObj</code>);<code> </code>// Display the current date<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>}<code></code></pre>



<pre class="wp-block-preformatted">}<br><br>Çıktı: 2023-03-29</pre>



<p class="wp-block-paragraph"><strong>Geçerli Saat için:</strong></p>



<p class="wp-block-paragraph">Geçerli saati (saat, dakika, saniye ve nanosaniye)&nbsp;<code>java.time.LocalTime </code>görüntülemek için sınıfı içe aktarın ve&nbsp;<code>now() </code>yöntemini kullanabiliriz.</p>



<pre class="wp-block-preformatted">import<code> </code>java.time.LocalTime;<code> </code>// import the LocalTime class<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted">public<code> </code>class<code> </code>Main<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>public<code> </code>static<code> </code>void<code> </code>main(String[]<code> args</code>)<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>LocalTime<code> myObj </code>=<code> </code>LocalTime.now();<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>System.<code>out</code>.println(<code>myObj</code>);<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>}<code></code></pre>



<pre class="wp-block-preformatted">}</pre>



<h2 class="wp-block-heading"><strong>Geçerli Tarih ve Saati Görüntüleme</strong><strong></strong></h2>



<p class="wp-block-paragraph">Geçerli tarih ve saati görüntülemek&nbsp;<code>java.time.LocalDateTime </code>için sınıfı içe aktarın ve&nbsp;<code>now() </code>yöntemini kullanabiliriz.</p>



<p class="wp-block-paragraph">Örnek:</p>



<pre class="wp-block-preformatted">import<code> </code>java.time.LocalDateTime;<code> </code>// import the LocalDateTime class<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted">public<code> </code>class<code> </code>Main<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>public<code> </code>static<code> </code>void<code> </code>main(String[]<code> args</code>)<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>LocalDateTime<code> myObj </code>=<code> </code>LocalDateTime.now();<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>System.<code>out</code>.println(<code>myObj</code>);<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>}<code></code></pre>



<pre class="wp-block-preformatted">}</pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="317" height="92" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-15.png" alt="" class="wp-image-201" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-15.png 317w, https://www.alperergun.site/wp-content/uploads/2026/05/image-15-300x87.png 300w" sizes="auto, (max-width: 317px) 100vw, 317px" /></figure>



<h2 class="wp-block-heading"><strong>Tarih ve Saati Biçimlendirme</strong></h2>



<p class="wp-block-paragraph">Yukarıdaki örnekte &#8220;T&#8221;, tarihi saatten ayırmak için kullanılır.&nbsp;<code>DateTimeFormatterofPattern() </code>Tarih-saat nesnelerini biçimlendirmek veya ayrıştırmak için sınıfı aynı paketteki yöntemle kullanabilirsiniz.&nbsp;Aşağıdaki örnek, tarih saatinden hem&#8221; T &#8221; hem de nanosaniyeleri kaldıracaktır:</p>



<p class="wp-block-paragraph">Örnek:</p>



<pre class="wp-block-preformatted">import<code> </code>java.time.LocalDateTime;<code> </code>// Import the LocalDateTime class<code></code></pre>



<pre class="wp-block-preformatted">import<code> </code>java.time.format.DateTimeFormatter;<code> </code>// Import the DateTimeFormatter class<code></code></pre>



<pre class="wp-block-code"><code>&nbsp;</code></pre>



<pre class="wp-block-preformatted">public<code> </code>class<code> </code>Main<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>public<code> </code>static<code> </code>void<code> </code>main(String[]<code> args</code>)<code> </code>{<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>LocalDateTime<code> myDateObj </code>=<code> </code>LocalDateTime.now();<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>System.<code>out</code>.println("Before formatting: "<code> </code>+<code> myDateObj</code>);<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>DateTimeFormatter<code> myFormatObj </code>=<code> </code>DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>String<code> formattedDate </code>=<code> myDateObj</code>.format(<code>myFormatObj</code>);<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp;&nbsp;&nbsp; </code>System.<code>out</code>.println("After formatting: "<code> </code>+<code> formattedDate</code>);<code></code></pre>



<pre class="wp-block-preformatted"><code>&nbsp; </code>}<code></code></pre>



<pre class="wp-block-preformatted">}</pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="531" height="123" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-16.png" alt="" class="wp-image-202" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-16.png 531w, https://www.alperergun.site/wp-content/uploads/2026/05/image-16-300x69.png 300w" sizes="auto, (max-width: 531px) 100vw, 531px" /></figure>



<p class="wp-block-paragraph"><strong>Örnek:</strong> 2 tarif arasındaki fark</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTimeFormat.java</p>



<p class="wp-block-paragraph"><strong>package</strong> tarifFark;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.text.ParseException;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.text.SimpleDateFormat;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.time.Duration;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.time.LocalDate;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.time.LocalDateTime;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.time.format.DateTimeFormatter;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.time.temporal.ChronoUnit;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.util.Date;</p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>class</strong> DateTimeFormat {</p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>long</strong> fark(String t1, String t2) <strong>throws</strong> ParseException {</p>



<p class="wp-block-paragraph">DateTimeFormatter formatter = DateTimeFormatter.<em>ofPattern</em>(&#8220;yyyy-MM-dd&#8221;);</p>



<p class="wp-block-paragraph">LocalDate firstDate = LocalDate.<em>parse</em>(t1, formatter);</p>



<p class="wp-block-paragraph">LocalDate secondDate = LocalDate.<em>parse</em>(t2, formatter);</p>



<p class="wp-block-paragraph"><strong>long</strong> days = ChronoUnit.<strong><em>DAYS</em></strong>.between(firstDate, secondDate);</p>



<p class="wp-block-paragraph"><strong>return</strong> days;</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tarifFark.java</p>



<p class="wp-block-paragraph"><strong>package</strong> tarifFark;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.text.ParseException;</p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>class</strong> tarihFark {</p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>static</strong> <strong>void</strong> main(String[] args) {</p>



<p class="wp-block-paragraph">String t1 = &#8220;01 01 2023&#8221;;</p>



<p class="wp-block-paragraph">String t2 = &#8220;01 03 2023&#8221;;</p>



<p class="wp-block-paragraph"><strong>long</strong> fark = 0;</p>



<p class="wp-block-paragraph">DateTimeFormat date = <strong>new</strong> DateTimeFormat();</p>



<p class="wp-block-paragraph"><strong>try</strong> {</p>



<p class="wp-block-paragraph">fark = date.fark(t1,t2);</p>



<p class="wp-block-paragraph">} <strong>catch</strong> (ParseException e) {</p>



<p class="wp-block-paragraph">e.printStackTrace();</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">System.<strong><em>out</em></strong>.println(fark);</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">çıktı: </p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="357" height="85" src="https://www.alperergun.site/wp-content/uploads/2026/05/image-17.png" alt="" class="wp-image-203" srcset="https://www.alperergun.site/wp-content/uploads/2026/05/image-17.png 357w, https://www.alperergun.site/wp-content/uploads/2026/05/image-17-300x71.png 300w" sizes="auto, (max-width: 357px) 100vw, 357px" /></figure>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Login Page – Spring Boot</title>
		<link>https://www.alperergun.site/login-page-spring-boot/</link>
		
		<dc:creator><![CDATA[ae_5206]]></dc:creator>
		<pubDate>Sat, 25 Apr 2026 06:14:56 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.alperergun.site/?p=125</guid>

					<description><![CDATA[Aşağıdaki gibi bir Login Page sayfası oluşturup, girilen verileri gösteren Spring uygulaması yapacağız. Önce Gerekli dependency leri https://start.spring.io/ sayfasından alıyoruz: dizin yapısı şu şekilde olacaktır: LoginModel.java dosyasını aşağıdaki gibi oluşturuyoruz: önce değişkenleri oluşturup getter ve setter ları ve sonda da toString() işlemlerini uyguluyoruz. private String username;private String password; — LoginModel.java — — LoginController.java — — [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Aşağıdaki gibi bir Login Page sayfası oluşturup, girilen verileri gösteren Spring uygulaması yapacağız.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="360" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-50.jpg" alt="" class="wp-image-126"/></figure>



<p class="wp-block-paragraph">Önce Gerekli dependency leri <a href="https://start.spring.io/">https://start.spring.io/</a> sayfasından alıyoruz:</p>



<ul class="wp-block-list">
<li>Spring Boot Dev Tools</li>



<li>Spring Web</li>



<li>Thymeleaf</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1067" height="525" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-51.jpg" alt="" class="wp-image-127"/></figure>



<p class="wp-block-paragraph"><br>dizin yapısı şu şekilde olacaktır:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="691" height="622" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-52.jpg" alt="" class="wp-image-128"/></figure>



<p class="wp-block-paragraph"><strong>LoginModel.java</strong> dosyasını aşağıdaki gibi oluşturuyoruz:</p>



<p class="wp-block-paragraph">önce değişkenleri oluşturup getter ve setter ları ve sonda da toString() işlemlerini uyguluyoruz.</p>



<pre class="wp-block-preformatted">private String username;<br>private String password;</pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="693" height="742" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-53.jpg" alt="" class="wp-image-129"/></figure>



<p class="wp-block-paragraph">— LoginModel.java —</p>



<pre class="wp-block-code"><code>package login3.login3.model;

public class LoginModel {

    private String username;
    private String password;

    @Override
    public String toString() {
        return "LoginModal{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
</code></pre>



<p class="wp-block-paragraph">— LoginController.java —</p>



<pre class="wp-block-code"><code>package login3.login3.controller;

import login3.login3.model.LoginModel;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/login")
public class LoginController {

    @GetMapping("/")
    public String displayLoginPage(Model model) {
        model.addAttribute("loginModel", new LoginModel());
        return "loginform";
    }

    @PostMapping("/processLogin")
    public String processLogin(LoginModel loginModel, Model model) {
        model.addAttribute("loginModel", loginModel);
        return "loginresults";  
    }
}</code></pre>



<p class="wp-block-paragraph">— LoginForm.html —</p>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html&gt;
&lt;html xmlns:th="http://www.thymeleaf.org"&gt;
&lt;head&gt;
    &lt;title&gt;Login&lt;/title&gt;
    &lt;link href="/css/bootstrap.min.css" rel="stylesheet"&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1 style="margin-left:7em"&gt;Login Page&lt;/h1&gt;
&lt;div class="container"&gt;
    &lt;div class="row"&gt;
        &lt;div class="col-md-6"&gt;  &lt;!-- This makes it take up half the container width --&gt;
            &lt;form action="#" method="post" th:action="@{processLogin}" th:object="${loginModel}"&gt;
                &lt;div class="mb-3"&gt;
                    &lt;label for="username" class="form-label"&gt;Username&lt;/label&gt;
                    &lt;input th:field="*{username}" type="text" class="form-control" id="username" aria-describedby="usernameHelp"&gt;
                    &lt;div id="usernameHelp" class="form-text"&gt;We'll never share your email with anyone else.&lt;/div&gt;
                &lt;/div&gt;
                &lt;div class="mb-3"&gt;
                    &lt;label for="password" class="form-label"&gt;Password&lt;/label&gt;
                    &lt;input th:field="*{password}" type="password" class="form-control" id="password" max-lengt="25"&gt;
                &lt;/div&gt;
                &lt;button type="submit" class="btn btn-primary"&gt;Login&lt;/button&gt;
            &lt;/form&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>



<p class="wp-block-paragraph">LoginForm.html dosyasındaki Bootstrap dosyalarını(css ve js) <a href="https://getbootstrap.com/">https://getbootstrap.com/</a> sayfasından indiriyoruz. Sonrada Uygulama dosyalarındaki <strong>static</strong> klasörüne ekliyoruz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="832" height="610" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-54.jpg" alt="" class="wp-image-130"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="327" height="437" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-55.jpg" alt="" class="wp-image-131"/></figure>



<p class="wp-block-paragraph">— loginresults.html —</p>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html&gt;
&lt;html xmlns:th="http://www.thymeleaf.org"&gt;
&lt;head&gt;
    &lt;title&gt;Login Results&lt;/title&gt;
    &lt;link href="/css/bootstrap.min.css" rel="stylesheet"&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class="container my-5"&gt;
    &lt;h2&gt;Login Results&lt;/h2&gt;
    &lt;p&gt;Username: &lt;span th:text="${loginModel.username}"&gt;&lt;/span&gt;&lt;/p&gt;
    &lt;p&gt;Password: &lt;span th:text="${loginModel.password}"&gt;&lt;/span&gt;&lt;/p&gt;

    &lt;form th:action="@{/login/}" method="get"&gt;
        &lt;button type="submit" class="btn btn-primary"&gt;Logout&lt;/button&gt;
    &lt;/form&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</code></pre>



<p class="wp-block-paragraph">— application.properties&nbsp; —</p>



<pre class="wp-block-code"><code>spring.application.name=login3
server.port=2022
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.enabled=true
</code></pre>



<p class="wp-block-paragraph">Son olarak uygulamadaki “Login3Application.java” &nbsp;dosyasını Run Ettirdiğimizde (Tetiklediğimizde) uygulamamız çalışır. Tarayıcımızın url kısmına “<a href="http://localhost:2022/login/">http://localhost:2022/login/</a> ” yazarak görebiliriz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="742" height="542" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-56.jpg" alt="" class="wp-image-132"/></figure>



<p class="wp-block-paragraph">Login butonuna basınca:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="498" height="435" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-57.jpg" alt="" class="wp-image-133"/></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Spring Temel Kavramlar</title>
		<link>https://www.alperergun.site/spring-temel-kavramlar/</link>
		
		<dc:creator><![CDATA[ae_5206]]></dc:creator>
		<pubDate>Sat, 25 Apr 2026 06:02:28 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.alperergun.site/?p=115</guid>

					<description><![CDATA[1) Spring framework nedir? Spring, Java platformlarını kullanarak çeşitli uygulama türlerinin geliştirilmesine yardımcı olan bir&#160;framework’tür. Basit ve kullanımı kolaydır. Gerçek zamanlı teknik sorunların çözülmesine yardımcı olur. Spring, WEB MVC, IOC, DAO, AOP, Context ve ORM gibi birden fazla&#160;modül&#160;içerir. 2) Spring Boot nedir ve Spring Framework’ten farkı nedir? Spring Boot, Java tabanlı bir framework olan Spring [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>1) Spring framework nedir?</strong></p>



<p class="wp-block-paragraph"><a href="https://coderspace.io/sozluk/spring"><strong>Spring</strong></a>, Java platformlarını kullanarak çeşitli uygulama türlerinin geliştirilmesine yardımcı olan bir&nbsp;<a href="https://coderspace.io/sozluk/framework"><strong>framework</strong></a>’tür. Basit ve kullanımı kolaydır. Gerçek zamanlı teknik sorunların çözülmesine yardımcı olur. Spring, WEB MVC, IOC, DAO, AOP, Context ve ORM gibi birden fazla<strong>&nbsp;modül&nbsp;</strong>içerir.</p>



<p class="wp-block-paragraph"><strong>2)</strong> <strong>Spring Boot nedir ve Spring Framework’ten farkı nedir?</strong></p>



<p class="wp-block-paragraph"><strong>Spring Boot</strong>, Java tabanlı bir framework olan <strong>Spring Framework</strong> üzerine inşa edilmiş, geliştiricilerin çok daha hızlı ve kolay bir şekilde <strong>bağımsız (standalone)</strong>, <strong>üretime hazır (production-ready)</strong> uygulamalar geliştirmesini sağlayan bir çerçevedir.</p>



<p class="wp-block-paragraph"><strong>Spring Framework</strong>: Bir iskelet. Geniş, esnek ama yapılandırması zahmetli.</p>



<p class="wp-block-paragraph"><strong>Spring Boot</strong>: Bu iskeleti kullanarak hızlı ve kolay uygulama geliştirmeyi sağlar</p>



<p class="wp-block-paragraph"><strong>3) Bean nedir? Spring konteyneri nedir ve nasıl çalışır?</strong></p>



<p class="wp-block-paragraph">“Spring Bean” ve “Spring konteyneri”, Spring Framework’ ün temel yapı taşlarındandır. Java ile geliştirme yapanlar için Spring, nesne yönetimini kolaylaştırır.</p>



<p class="wp-block-paragraph"><strong>Spring Bean</strong>, Spring IoC (Inversion of Control) Container tarafından yönetilen nesnedir. Başka bir deyişle, Spring uygulaması içinde yaşam döngüsü Spring tarafından kontrol edilen bir Java sınıfıdır.</p>



<p class="wp-block-paragraph">Spring’de, uygulamanızın omurgasını oluşturan ve Spring IoC konteyneri tarafından yönetilen nesnelere fasulye denir. Bir fasulye, bir Spring IoC konteyneri tarafından örneklenen, birleştirilen ve yönetilen bir nesnedir. Aksi takdirde, bir fasulye, uygulamanızdaki birçok nesneden sadece biridir. Fasulyeler ve aralarındaki bağımlılıklar, bir konteyner tarafından kullanılan yapılandırma meta verilerinde yansıtılır.</p>



<p class="wp-block-paragraph">Java uygulamalarını geliştirmek için kullanılan Spring Framework, iş mantığı bileşenlerini ve nesnelerini yönetmek için “Spring Bean” adı verilen bir bileşen modeli kullanır. Spring Bean’ler, uygulamanızın farklı parçalarını temsil eden ve Spring Container tarafından yönetilen nesnelerdir.</p>



<p class="wp-block-paragraph">Spring Bean, bir Java sınıfı veya bileşeni gibi düşünülebilir ve Spring Container tarafından yönetilir. Bu, Spring uygulamanızda kullanmak istediğiniz her türlü nesnenin bir Spring Bean olabileceği anlamına gelir. Spring Container, bu nesneleri oluşturur, yapılandırır, yönetir ve sonlandırır.</p>



<p class="wp-block-paragraph"><strong>4)</strong> <strong>Spring’de Dependency Injection (bağımlılık enjeksiyonu) nedir?&nbsp;</strong></p>



<p class="wp-block-paragraph"><strong>Bağımlılık Enjeksiyonu (DI)</strong>, uygulamayı yönetmeyi ve test etmeyi kolaylaştıracak şekilde programlama kodundaki bağımlılığı ortadan kaldıran bir tasarım modelidir. <strong>Dependency Injection</strong>&nbsp;Spring’in en önemli parçasıdır ve Inversion of Control’ ün bir uygulama metotudur. Dependency Injection, programlama kodunun gevşek bir şekilde bağlanmasını ve&nbsp;<strong>daha kolay test etmeyi&nbsp;</strong>sağlar.</p>



<p class="wp-block-paragraph">IoC ile DI arasında nasıl bir ilişki var diye sorarsak:&nbsp;</p>



<p class="wp-block-paragraph">Örneğin bir nesne oluşturmak istersin → <code>new</code> anahtar kelimesiyle yaparsın.<br>Ama <strong>IoC</strong> diyor ki:<br>“Sen <code>new</code> ile uğraşma, nesneleri <strong>ben (Spring)</strong> oluştururum.”</p>



<p class="wp-block-paragraph"><strong>Yani kontrol sende değil, Spring’te.</strong> Bu yüzden adına “Inversion of Control” denir. Burada “Araba” sınıfı “Motor”a <strong>sıkı sıkıya bağlıdır</strong>. Motor değişirse, arabayı da değiştirmek zorundasın.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Dependency Injection</strong>, IoC’nin uygulanma şeklidir. Yani IoC bir “fikir”, DI ise bu fikrin “uygulama yöntemi”dir. Spring, nesneleri kendi oluşturur ve birbirine <strong>enjekte eder</strong>.</p>



<p class="wp-block-paragraph">IoC = <strong>Nesneleri ben değil Spring oluşturacak</strong>,</p>



<p class="wp-block-paragraph">DI = <strong>Spring oluşturduğu nesneleri birbirine bağlayacak</strong>.</p>
</blockquote>



<p class="wp-block-paragraph">İstemcinin bağımlılıklarını sağlama sorumluluğunun, başka bir nesneye devrettiği anlamına gelir. Yani belirli bir nesne için verilen bağımlılıkların veya yardımcı bileşenlerin enjekte edilmesidir. Örneğin nesnemiz bir araba olsun. Biz bir araba istediğimizde, araba fabrikası arabanın bağımlılıklarını ve bileşenlerini (Örneğin arabanın motoru, elektronik aksanını, egsozunu, kaportasını vb. parçalarını) bizim için birleşirir. Bu birleştirme işine <strong><u>Dependency Injection</u></strong> denir. Bu örnekte araba fabrikası Spring IoC konteyner’ dir.</p>



<p class="wp-block-paragraph"><strong>5) IoC Nedir?</strong></p>



<p class="wp-block-paragraph">Bir framework ü extend ettiğimizde yani uygulamayı ayağa kaldırdığımızda, framework kontrolü kendisi ele alır. Yani hangi objeleri nasıl oluşturacağını, hangi objelerin arasında dependency ler olması gerektiğini ve nasıl yöneteceğini( Dependency Injection), hangi metotları çağıracağını, hangi excepcionları oluşturup hangi eventleri fırlatacağını, sonuç olarak bütün bunlara karar veren yapı framework ün kendisidir. Buna <strong>Inversion of Control</strong> denir.</p>



<p class="wp-block-paragraph">Framework akış kontrolünü ele aldığı zaman IoC olur.</p>



<p class="wp-block-paragraph"><strong>IoC;</strong> Nesneleri Manuel olarak kendimiz oluşturmak yerine bunu Spring IoC konteyner’ ın yapmasıdır. Spring Konteyner bir tür nesne fabrikası gibi çalışır.</p>



<h4 class="wp-block-heading">6) <strong>Spring @RestController nedir?</strong></h4>



<p class="wp-block-paragraph">@RestController ek açıklaması&nbsp;<strong>RESTful</strong>&nbsp;web servislerini oluşturmak için kullanılır. @RestController sınıfları, @Controller sınıflarına benzer bir şekilde çalışır. Ancak, @Controller’dan farklı olarak her metot çağrısı varsayılan olarak verileri&nbsp;<strong>JSON</strong>&nbsp;veya&nbsp;<strong>XML&nbsp;</strong>formatında döndürmek üzere optimize edilmiştir.&nbsp;</p>



<p class="wp-block-paragraph"><strong>7)</strong> <strong>IoC(</strong>Inversion of Control<strong>) container ne işe yarar? Faydaları nelerdir?</strong></p>



<p class="wp-block-paragraph">Spring IoC Container, uygulamanızdaki nesnelerin <strong>oluşturulması, konfigürasyonu ve bağımlılıklarının yönetilmesi</strong> işlerini sizin yerinize yapar. Böylece gevşek bağlı (loosely coupled) ve daha kolay test edilebilir bir mimari elde edilir.</p>



<p class="wp-block-paragraph">Inversion of Control (IoC), bir yazılım tasarım prensibidir. Temel fikri şudur:&nbsp;</p>



<p class="wp-block-paragraph">“Nesneleri veya bağımlılıkları uygulama içinde kendin oluşturma, bu sorumluluğu bir framework veya dış bir mekanizmaya bırak.”</p>



<p class="wp-block-paragraph">Eskiden programcılar, ihtiyaç duydukları nesneleri&nbsp;new&nbsp;anahtar kelimesiyle doğrudan oluştururdu. Bu, uygulamayı sıkı sıkıya bağımlı hale getirir ve bakımı zorlaştırır. IoC yaklaşımıyla ise programın akışını programcı değil, framework (örneğin Spring) yönetir. Yani “kontrolün tersine çevrilmesi” durumu gerçekleşir.</p>



<p class="wp-block-paragraph">Spring Konteyner ın 2 temel işlevi vardır: IoC (Kontrolün Tersine Çevrilmesini) kullanarak nesneleri oluşturmak, kullanmak ve yönetmek daha sonra bağımlılık enjeksiyonunu kullanan nesne bağımlılıklarını enjekte etmektir.</p>



<p class="wp-block-paragraph"><strong>8) Spring Boot’ta application.properties vs application.yml farkları nelerdir?</strong></p>



<p class="wp-block-paragraph">Spring Boot’ta hem application.properties hem de application.yml dosyaları, uygulamanın yapılandırma (konfigürasyon) ayarlarını tutmak için kullanılır. Her ikisi de <strong>aynı işlevi görür</strong>, ancak <strong>sözdizimleri ve okunabilirlikleri</strong> bakımından farklıdırlar.</p>



<p class="wp-block-paragraph"><strong>application.properties</strong></p>



<ul class="wp-block-list">
<li><strong>Anahtar-değer</strong> (key=value) şeklinde yapılandırılır.</li>



<li>Düz, basit yapılıdır.</li>
</ul>



<p class="wp-block-paragraph">Küçük ve orta ölçekli projelerde daha yaygındır.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="840" height="277" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-44.jpg" alt="" class="wp-image-116"/></figure>



<p class="wp-block-paragraph"><strong>application.yml (YAML)</strong></p>



<ul class="wp-block-list">
<li><strong>Yamuk hiyerarşik yapı (indentation)</strong> kullanır.</li>



<li>Daha okunabilir ve gruplama (nesting) konusunda daha esnektir.</li>



<li>Büyük, modüler veya karmaşık konfigürasyonlarda tercih edilir.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="678" height="472" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-45.jpg" alt="" class="wp-image-117"/></figure>



<p class="wp-block-paragraph"><strong>9) Spring MVC mimarisi nasıl çalışır?</strong></p>



<p class="wp-block-paragraph"><strong>Spring MVC (Model-View-Controller)</strong>, Spring Framework’ün bir parçası olan web tabanlı bir mimaridir ve HTTP isteklerini karşılama, işleme ve sonuçları istemciye döndürme sürecini yöneten güçlü bir yapıdır.</p>



<p class="wp-block-paragraph"><strong>Spring MVC’nin Temel Bileşenleri</strong></p>



<ol class="wp-block-list">
<li><strong>DispatcherServlet</strong><br>Tüm gelen HTTP isteklerinin ilk ulaştığı merkez bileşendir (Front Controller).</li>



<li><strong>Controller (denetleyici)</strong><br>İsteği alır, iş mantığını başlatır ve sonucu bir model + view nesnesi olarak döndürür.</li>



<li><strong>Service (İş Katmanı)</strong><br>Controller’dan gelen işlemleri gerçekleştirir. (İş mantığı burada yazılır.)</li>



<li><strong>Repository / DAO (Veri Katmanı)</strong><br>Veritabanıyla iletişim kurar. JPA, JDBC, Hibernate vb. ile kullanılır.</li>



<li><strong>Model</strong><br>Uygulama verisini temsil eder (örn. User, Product gibi sınıflar).</li>



<li><strong>View</strong><br>Sonuç kullanıcıya sunulmadan önceki arayüzdür (HTML, JSP, Thymeleaf, JSON vs.).</li>
</ol>



<p class="wp-block-paragraph"><strong>Spring MVC Akış Diyagramı (Adım Adım)</strong></p>



<ol class="wp-block-list">
<li><strong>Kullanıcı HTTP isteği gönderir</strong> (örneğin: /users/1).</li>



<li><strong>DispatcherServlet</strong> isteği karşılar ve uygun Controller’ı bulmak için <strong>HandlerMapping</strong> kullanır.</li>



<li>Uygun <strong>Controller</strong> sınıfı çağrılır ve metot çalıştırılır (örneğin @GetMapping(“/users/{id}”)).</li>



<li>Controller, <strong>iş mantığını Service katmanına</strong> delegeler (örneğin userService.getUserById(id)).</li>



<li>Service katmanı, gerekirse veriye erişmek için <strong>Repository</strong> katmanına erişir.</li>



<li>Gerekli işlemler bittikten sonra Controller, <strong>Model + View (veya sadece JSON)</strong> döner.</li>



<li>DispatcherServlet, bu bilgileri <strong>ViewResolver</strong> yardımıyla uygun <strong>görünüm (view)</strong> ile eşleştirir.</li>



<li><strong>Sonuç kullanıcıya render edilir</strong> (örneğin bir HTML sayfası veya JSON yanıt).</li>
</ol>



<p class="wp-block-paragraph"><strong>Özetle</strong></p>



<ul class="wp-block-list">
<li><strong>Controller</strong> → Kullanıcıdan gelen isteği alır.</li>



<li><strong>Service</strong> → İş mantığını çalıştırır.</li>



<li><strong>Repository</strong> → Veritabanına erişir.</li>



<li><strong>Model</strong> → Taşınan veridir.</li>



<li><strong>View</strong> → Gösterilecek son arayüzdür (HTML/JSON/XML).</li>



<li><strong>DispatcherServlet</strong> → Her şeyi yöneten merkezi trafik polisi.</li>
</ul>



<p class="wp-block-paragraph"><strong>10)</strong> <strong>Maven nedir? Ne amaçla kullanılır? Faydaları nedir?</strong></p>



<p class="wp-block-paragraph">Spring Boot, Maven’ ın Standart Dizin(Klasör) Yapısını kullanır.</p>



<p class="wp-block-paragraph">Maven; Bir Proje&nbsp; geliştirme aracıdır. Maven, Derleme yöntemidir ve bağımlılıklar için kullanılır. Maven şu problemleri çözmemizi sağlar:</p>



<ul class="wp-block-list">
<li>Java projelerimizi oluştururken Spring, JAR dosyaları, Hibernate JAR Dosyaları gibi EK JAR dosyalarına ihtiyaç duyabiliriz. JAR dosyalarını her bir projenin web sitesinden indirmek ve ardından bu JAR dosyalarını derleme yolunuza veya sınıf yolunuza manuel olarak eklemektir. Programcı olarak tüm bu gereksinimlerin web sitesine giderek indirmem gerekiyor. İşte tam bu noktada Maven bu manuel yaptığımız işleri bizim için yapabilmektedir. Maven bizim için gerekli JAR dosyalarını internetten indirmektedir. Özetle Maven a alışveriş listemizi veriyoruz ve Maven bu alışveriş listesindekileri deposundan bize veriyor. Uygulamamızı derleyip çalıştırdığımızda Maven derleme ve sınıf yolunu bizim için halledebilmektedir.</li>



<li>Bir uygulamaya başlandığında her yazılımcı ya da yazılım ekibi kendi dizin(klasör) yapısını hayal eder ama sonra ekip değiştiğinde veya yazılımcı değiştiğinde mevcut dizin yapısı ideal değildir ve standartlaştırılmamıştır. Maven standart bir dizin(klasör) yapısı sağlayarak bu sorunu çözer</li>
</ul>



<p class="wp-block-paragraph"><strong>Maven’ in Avantajları:</strong></p>



<p class="wp-block-paragraph">– Bağımlılık Yönetimi: Maven projemiz için gerekli JAR dosyalarını bizim için bulur.</p>



<p class="wp-block-paragraph">– Projelerimizi inşa etmek ve çalıştırmak yani derleme ve sınıf yolu konusunda endişelenmemize gerek kalmaz.</p>



<p class="wp-block-paragraph">– Standart Dizin yapısına sahiptir. Başka bir ekibin yarım kalmış projesinde zorluk çekmeyiz. Ve projeyi kendi ide mize taşıyabiliriz.</p>



<p class="wp-block-paragraph">– ilk 3 madde sayesinde Maven daha Kurumsaldır diyebiliriz.</p>



<p class="wp-block-paragraph"><strong>11)</strong> <strong>Spring @Controller nedir?</strong></p>



<ul class="wp-block-list">
<li><strong>Spring MVC</strong>’de kullanılan bir <strong>annotation</strong>’dır.</li>



<li>Bir sınıfın <strong>web isteklerini (HTTP request)</strong> karşılayacağını belirtir.</li>



<li>Yani: “<code>Bu sınıf, gelen isteklere cevap verecek bir Controller (denetleyici)</code>” demektir.</li>
</ul>



<p class="wp-block-paragraph">Spring uygulaması çalıştığında, <code>@Controller</code> ile işaretlenmiş sınıflar <strong>Spring IoC Container</strong> tarafından taranır (component scan) ve <strong>bean</strong> olarak kaydedilir.</p>



<h4 class="wp-block-heading">Ne İşe Yarar?</h4>



<ul class="wp-block-list">
<li>HTTP isteklerini (GET, POST, PUT, DELETE) yakalar.</li>



<li>Model verisini işleyip, uygun <strong>View (sayfa/template)</strong> ile birlikte kullanıcıya döner.</li>



<li>Genellikle <strong>JSP, Thymeleaf, Freemarker</strong> gibi template motorları ile beraber kullanılır.</li>
</ul>



<p class="wp-block-paragraph">@Controller, Spring Framework’te bir sınıfı denetleyici bileşen olarak işaretlemek için kullanılır. Web uygulamalarını yapılandırılmış bir şekilde oluşturmak için kullanılan Spring MVC (Model-View-Controller) mimarisinin bir parçasıdır.&nbsp;</p>



<p class="wp-block-paragraph">@Controller, bir sınıfın Spring MVC’de bir denetleyici (controller) olarak işlev görmesini sağlar. Denetleyiciler, istemciden gelen talepleri alır, işler ve sonuç olarak bir görünüm (view) döndürür.</p>



<p class="wp-block-paragraph">Bir sınıfa @Controller ile açıklama eklediğinizde, Spring onu bir denetleyici olarak tanır. HTTP isteklerini işlemesine ve HTTP yanıtları oluşturmasına izin verir. Denetleyiciler, kullanıcı isteklerini işlemekten, uygulamanın iş mantığıyla (hizmetler) etkileşim kurmaktan ve yanıtı oluşturmak için uygun görünümü döndürmekten sorumludur. Spring Controller ek açıklaması genellikle&nbsp;<strong>@RequestMapping</strong>&nbsp;ek açıklamasına dayalı açıklamalı işleyici yöntemleriyle birlikte kullanılır.&nbsp;</p>



<p class="wp-block-paragraph"><strong>12)</strong> <strong>Spring Framework’te kaç modül var ve bunlar nelerdir?</strong></p>



<p class="wp-block-paragraph">Spring, farklı modüllerden oluşur ve her bir modül belirli bir geliştirme alanına odaklanır. Spring, yaklaşık&nbsp;<strong>20 modül</strong>&nbsp;halinde düzenlenmiş özelliklerden oluşur.&nbsp;</p>



<p class="wp-block-paragraph">Spring framework,&nbsp;<strong>core, beans, context, expression language, AOP, Aspects, Instrumentation, JDBC, ORM, OXM, JMS, Transaction, Web, Servlet, Struts</strong>&nbsp;vb. gibi birçok modülden oluşur.&nbsp;</p>



<p class="wp-block-paragraph">Bu modüller, aşağıdaki şemada gösterildiği gibi Core Container, Data Access/Integration, Web, AOP (Aspect Oriented Programming), Instrumentation, ve Test olarak gruplandırılmıştır.</p>



<p class="wp-block-paragraph"><strong>13)</strong> <strong>Spring yapılandırma dosyası nedir?</strong></p>



<p class="wp-block-paragraph"><strong>Spring yapılandırma dosyası,</strong>&nbsp;.xml uzantılı, sınıflar ve arayüzler ile ilgili bilgileri içeren&nbsp;<a href="https://coderspace.io/sozluk/xml"><strong>XML</strong></a>&nbsp;dosyasıdır. Bu dosya, sınıfların nasıl yapılandırıldığını ve birbirlerine nasıl tanıtıldığını açıklar.&nbsp;</p>



<p class="wp-block-paragraph">Spring yapılandırma dosyası, Spring Framework’ün&nbsp;<strong>Inversion of Control (IoC)&nbsp;</strong>prensibi ve&nbsp;<strong>bağımlılık enjeksiyonu</strong>&nbsp;mekanizmasını kullanarak uygulamanın bileşenlerini yönetmesine yardımcı olur.</p>



<p class="wp-block-paragraph"><strong>14)</strong> <strong>Spring’in farklı bileşenleri nelerdir?</strong></p>



<p class="wp-block-paragraph">Spring uygulamaları genellikle farklı amaçlara hizmet eden, farklı tipte bileşenler içerir. Bir Spring uygulaması genel olarak aşağıdaki bileşenlerden oluşur:</p>



<p class="wp-block-paragraph"><strong>User Program:&nbsp;</strong>Fonksiyonları kullanır.</p>



<p class="wp-block-paragraph"><strong>Interface:&nbsp;</strong>Fonksiyonları tanımlar.</p>



<p class="wp-block-paragraph"><strong>Bean class:&nbsp;</strong>Spring’in temel bileşeni olan Bean class, özellikleri ve işlevleri içerir.</p>



<p class="wp-block-paragraph"><strong>Spring Aspect Oriented Programming (AOP):</strong>&nbsp;Kesişen konuların işlevselliğini sağlar.</p>



<p class="wp-block-paragraph"><strong>Bean Configuration File:</strong>&nbsp;Sınıfların bilgilerini ve bunların nasıl yapılandırılacağını içerir.</p>



<h3 class="wp-block-heading">15) <strong>Kaç çeşit IoC container vardır?</strong></h3>



<p class="wp-block-paragraph">İki tür IoC konteyneri vardır:&nbsp;</p>



<p class="wp-block-paragraph"><strong>1️</strong><strong>.</strong><strong>BeanFactory:</strong> Spring’de tanımlanan ve yönetilen nesneleri (bean’leri) oluşturma, konfigüre etme ve yönetme işlevlerini sağlar. BeanFactory, özellikle büyük ve karmaşık uygulamalarda, bean’leri gecikmeli (lazy) veya önceden yaratılmış (pre-instantiated) olarak oluşturmanıza, bu bean’lerin <strong>yaşam döngüsünü yönetmenize</strong> ve <strong>bağımlılık enjeksiyonunu </strong>gerçekleştirmenize olanak tanır.</p>



<p class="wp-block-paragraph"><strong>XmlBeanFactory</strong>, BeanFactory arayüzünün uygulama sınıfıdır. BeanFactory’yi kullanabilmek için XmlBeanFactory sınıfı kullanılır.</p>



<p class="wp-block-paragraph"><strong>2️</strong><strong>.</strong><strong>ApplicationContext:</strong> ApplicationContext arayüzü, BeanFactory arayüzünün üzerine inşa edilmiştir. BeanFactory’nin&nbsp; üstünde bazı ekstra işlevler oluşturmayı sağlar.</p>



<p class="wp-block-paragraph"><strong>ClassPathXmlApplicationContext sınıfı</strong>, ApplicationContext arayüzünün uygulama sınıfıdır. ApplicationContext’i kullanabilmek için ClassPathXmlApplicationContext sınıfını aşağıda verildiği gibi başlatmanız gerekir.</p>



<p class="wp-block-paragraph"><strong>BENZETME: “Araba Servisi”</strong></p>



<ul class="wp-block-list">
<li>Düşün ki bir araba servisin var.</li>



<li>Araba için lastik, motor, cam gibi parçalar gerekiyor.</li>



<li>Bu parçaları <strong>elle tek tek sen takmak</strong> yerine, işi otomatik yapan bir sistem var.</li>



<li>İşte bu otomatik sistemi Spring’de <strong>IoC Container</strong> olarak düşünebilirsin.</li>
</ul>



<p class="wp-block-paragraph">1. IoC Container (Genel kavram)</p>



<p class="wp-block-paragraph">“Ben nesneleri senin yerine oluştururum, bağımlılıklarını bağlarım, sen sadece kullan.”</p>



<p class="wp-block-paragraph">Yani:</p>



<ul class="wp-block-list">
<li>Araba sınıfının ihtiyacı varsa Lastik, Motor gibi nesneleri otomatik verir.</li>
</ul>



<p class="wp-block-paragraph">2. BeanFactory (Temel versiyon)</p>



<p class="wp-block-paragraph">En basit hali.<br>“İhtiyacın olunca ben parçayı (bean) üretirim.”</p>



<ul class="wp-block-list">
<li>Örnek: Araba tamircisi lastiği sadece ihtiyaç olunca depodan çıkarır.</li>



<li>Avantaj: Hafif ve hızlı.</li>



<li>Dezavantaj: Bazı gelişmiş özellikleri desteklemez.</li>
</ul>



<p class="wp-block-paragraph">BeanFactory factory = new XmlBeanFactory(new FileSystemResource(“beans.xml”));</p>



<p class="wp-block-paragraph">Araba araba = (Araba) factory.getBean(“araba”);</p>



<p class="wp-block-paragraph">3. ApplicationContext (Gelişmiş versiyon)</p>



<p class="wp-block-paragraph">“Ben sadece parçayı üretmem, servisle ilgili ekstra işler de yaparım.”</p>



<ul class="wp-block-list">
<li>Örnek: Lastiği çıkarırken aynı anda fatura keser, log tutar, müşteri memnuniyeti anketi gönderir.</li>



<li>Yani sadece nesne üretmekle kalmaz; event gönderme, mesajlaşma gibi ek özellikler de sunar.</li>
</ul>



<p class="wp-block-paragraph">ApplicationContext context = new ClassPathXmlApplicationContext(“beans.xml”);</p>



<p class="wp-block-paragraph">Araba araba = (Araba) context.getBean(“araba”);</p>



<p class="wp-block-paragraph">4. Spring Context (Gündelik terim)</p>



<p class="wp-block-paragraph">İnsanlar ApplicationContext yerine bazen buna “Spring Context” der.</p>



<ul class="wp-block-list">
<li>Teknik olarak bir sınıf değil.</li>



<li>Daha çok “konuşma dilinde” kullanılır:</li>
</ul>



<p class="wp-block-paragraph">“Spring context üzerinden al” → ApplicationContext’ten al demek.</p>



<p class="wp-block-paragraph"><strong>16) @Component, @Service, @Repository anotasyonlarının farkı nedir?</strong></p>



<p class="wp-block-paragraph"><strong>@Component</strong></p>



<ul class="wp-block-list">
<li>En genel anotasyondur.</li>



<li>Spring tarafından otomatik olarak algılanması istenen herhangi bir bileşene konur.</li>



<li>Genellikle sınıfları Spring’e bean olarak tanıtmak için kullanılır.</li>
</ul>



<p class="wp-block-paragraph"><strong>@Service</strong></p>



<ul class="wp-block-list">
<li>@Component’in özel bir formudur.</li>



<li>İş katmanı (business logic layer) sınıflarına konur.</li>



<li><strong>Anlamsal olarak</strong>, bu sınıfın bir “servis” (hizmet sağlayıcı) olduğunu ifade eder.</li>



<li>Ekstra davranış eklemez ama okunabilirliği artırır (örneğin mimari analiz araçları için anlam taşır).</li>
</ul>



<p class="wp-block-paragraph"><strong>@Repository</strong></p>



<p class="wp-block-paragraph">Yani JDBC gibi düşük seviye hataları, Spring’in veri erişim istisna hiyerarşisine dönüştürür.</p>



<p class="wp-block-paragraph">Yine @Component’ten türemiştir.</p>



<p class="wp-block-paragraph">Veri erişim katmanındaki (DAO) sınıflar için kullanılır.</p>



<p class="wp-block-paragraph"><strong>Ek olarak</strong>, Spring bu anotasyonu taşıyan sınıflar için:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="607" height="357" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-46.jpg" alt="" class="wp-image-118"/></figure>



<p class="wp-block-paragraph"><strong>17)</strong> <strong>@Controller ve @RestController arasındaki fark nedir?</strong></p>



<ul class="wp-block-list">
<li><code>@Controller</code> → <strong>View döndürür</strong> (HTML sayfası, JSP, Thymeleaf vb.)</li>



<li><code>@RestController</code> → <strong>JSON/XML gibi direkt veri döndürür</strong> (REST API için)</li>
</ul>



<p class="wp-block-paragraph">Aslında <code>@RestController</code>, <code>@Controller</code> + <code>@ResponseBody</code> birleşimidir.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="850" height="600" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-47.jpg" alt="" class="wp-image-119"/></figure>



<p class="wp-block-paragraph"><code>/merhaba</code> çağrıldığında:</p>



<ul class="wp-block-list">
<li><code>merhaba.html</code> dosyası açılır.</li>



<li>İçinde <code>${mesaj}</code> yazarsan, ekrana <code>"Spring MVC'den Selamlar!"</code> gelir.</li>
</ul>



<p class="wp-block-paragraph">Yani bu kullanım <strong>sayfa (View)</strong> döndürür.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="552" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-48.jpg" alt="" class="wp-image-121"/></figure>



<p class="wp-block-paragraph"><code>/merhaba</code> çağrıldığında:</p>



<ul class="wp-block-list">
<li>Direkt <code>"Spring REST API'den Selamlar!"</code> cevabı gelir.</li>



<li>Hiçbir view/template kullanılmaz.</li>
</ul>



<p class="wp-block-paragraph">Yani bu kullanım <strong>veri (JSON/String)</strong> döndürür.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="852" height="272" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-49.jpg" alt="" class="wp-image-123"/></figure>



<p class="wp-block-paragraph"><strong>18)</strong> <code><strong>@Autowired</strong></code><strong> Nedir?</strong></p>



<ul class="wp-block-list">
<li><strong>Spring Framework’te Dependency Injection (Bağımlılık Enjeksiyonu)</strong> yapmak için kullanılan bir anotasyondur.</li>



<li>Spring Container, <code>@Autowired</code> gördüğü yerde ilgili <strong>bean</strong>’i bulur ve oraya otomatik olarak enjekte eder.</li>



<li>Yani: “<code>Bu sınıf, çalışmak için başka bir sınıfa ihtiyaç duyuyor. Spring, o bağımlılığı otomatik olarak bana ver</code>” demektir.</li>



<li>@Autowired olmazsa uygulamada sürekli klasik New kullanımı(nesne oluşturma) olur ve bu da <code>UserService</code>, <code>UserRepository</code> sınıfına <strong>sıkı sıkıya bağımlı</strong> hale gelir. Eğer <code>UserRepository</code> yerine <code>OracleUserRepository</code> kullanmak istersek, kodu <strong>değiştirmek zorunda kalırız. </strong>Bu da <strong>esnekliği azaltır</strong> ve <strong>test etmeyi zorlaştırır</strong>.</li>



<li><code>new</code> ile → <strong>sıkı bağlılık (tight coupling)</strong> oluşur. <code>@Autowired</code> ile → <strong>gevşek bağlılık (loose coupling)</strong> sağlanır. Yani <code>@Autowired</code>, sınıfların birbirine olan bağımlılığını azaltarak <strong>SOLID prensiplerine</strong> uygun yazılım geliştirmemizi sağlar.</li>
</ul>



<p class="wp-block-paragraph">@Autowired Ne İşe Yarar?</p>



<p class="wp-block-paragraph">Daha <strong>temiz</strong>, <strong>test edilebilir</strong> ve <strong>bakımı kolay</strong> kod yazmayı sağlar.</p>



<p class="wp-block-paragraph">Kod içinde <code>new</code> anahtar kelimesiyle nesne üretmeye gerek kalmaz.</p>



<p class="wp-block-paragraph">Spring Container, uygun <strong>bean</strong>’i bulup ilişkilendirir.</p>



<h4 class="wp-block-heading">Özet</h4>



<ul class="wp-block-list">
<li><code>@Autowired</code>, Spring’in <strong>IoC Container</strong>’ına “Bu bağımlılığı otomatik olarak bul ve buraya ekle” talimatı verir.</li>



<li>Kullanım yerleri: <strong>field, constructor, setter</strong>.</li>



<li>Modern Spring projelerinde <strong>constructor injection</strong> en çok önerilen yöntemdir.</li>
</ul>



<p class="wp-block-paragraph"><strong>19)</strong> <strong>@Primary ve @Qualifier anotosyonları nedir? Ne işe yarar?</strong></p>



<h4 class="wp-block-heading">Günlük hayat benzetmesiyle anlatalım</h4>



<p class="wp-block-paragraph">Diyelim ki garajında <strong>iki araba</strong> var:</p>



<ul class="wp-block-list">
<li>Bir <strong>BMW</strong></li>



<li>Bir <strong>Mercedes</strong></li>
</ul>



<p class="wp-block-paragraph">Sen yardımcına diyorsun ki:</p>



<p class="wp-block-paragraph">“Garajdan arabayı getir!”</p>



<p class="wp-block-paragraph">Ama yardımcı şaşırıyor:</p>



<p class="wp-block-paragraph">“Hangisini getireyim patron? BMW mi, Mercedes mi?”</p>



<p class="wp-block-paragraph">İşte Spring de böyle kararsız kalıyor.</p>



<h4 class="wp-block-heading">İşte bu noktada 2 çözüm var:</h4>



<ol class="wp-block-list">
<li><code>@Qualifier</code> → “Hangisini istediğini açıkça söyle.”</li>



<li><code>@Primary</code> → “Varsayılan olarak hep bunu seç.”</li>
</ol>



<h4 class="wp-block-heading">1. @Qualifier — “Hangisini istiyorsan adını söyle”</h4>



<p class="wp-block-paragraph">Diyelim ki iki farklı sınıf var:</p>



<p class="wp-block-paragraph">@Component(“bmw”)</p>



<p class="wp-block-paragraph">public class BMW implements Araba {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; public void sur() { System.out.println(“BMW sürülüyor!”); }</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">@Component(“mercedes”)</p>



<p class="wp-block-paragraph">public class Mercedes implements Araba {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; public void sur() { System.out.println(“Mercedes sürülüyor!”); }</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">Ve başka bir sınıfta araba kullanmak istiyorsun:</p>



<p class="wp-block-paragraph">@Component</p>



<p class="wp-block-paragraph">public class Sofor {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; @Autowired</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; @Qualifier(“bmw”) // Hangisini istiyorsak belirtiyoruz</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; Araba araba;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; public void yolaCik() {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; araba.sur();</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; }</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">Spring şunu anlıyor:</p>



<p class="wp-block-paragraph">“Tamam, bmw etiketli arabayı veriyorum.”</p>



<p class="wp-block-paragraph"><strong>Sonuç:</strong><br>BMW sürülüyor!</p>



<p class="wp-block-paragraph"><strong>@Qualifier</strong> = “Aynı tipte birden fazla nesne varsa, adını yazarak seç.”</p>



<h4 class="wp-block-heading">2. @Primary — “Varsayılan olarak hep bunu kullan”</h4>



<p class="wp-block-paragraph">Yine aynı örnekte, diyelim ki sen hep Mercedes’i tercih ediyorsun.<br>Her seferinde <code>@Qualifier("mercedes")</code> yazmak istemiyorsun.</p>



<p class="wp-block-paragraph">O zaman Mercedes sınıfına <code>@Primary</code> eklersin:</p>



<p class="wp-block-paragraph">@Component</p>



<p class="wp-block-paragraph">@Primary</p>



<p class="wp-block-paragraph">public class Mercedes implements Araba {</p>



<p class="wp-block-paragraph">&nbsp;&nbsp;&nbsp; public void sur() { System.out.println(“Mercedes sürülüyor!”); }</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">Artık başka yerde şöyle yazsan bile:</p>



<p class="wp-block-paragraph">@Autowired</p>



<p class="wp-block-paragraph">Araba araba;</p>



<p class="wp-block-paragraph">Spring otomatik olarak der ki:</p>



<p class="wp-block-paragraph">“Tamam, varsayılan @Primary olan Mercedes’i kullanıyorum.”</p>



<p class="wp-block-paragraph"><strong>Sonuç:</strong><br>Mercedes sürülüyor!</p>



<p class="wp-block-paragraph"><strong>@Primary</strong> = “Birden fazla varsa, varsayılan olarak beni seç.”</p>



<h4 class="wp-block-heading">@Primary ve @Qualifier birlikte kullanılabilir mi?</h4>



<p class="wp-block-paragraph">Evet!<br>Genelde şöyle olur:</p>



<ul class="wp-block-list">
<li><code>@Primary</code> → en çok kullanılan nesneye koyarsın.</li>



<li><code>@Qualifier</code> → özel durumlarda farklı bir nesne istersin.</li>
</ul>



<p class="wp-block-paragraph">Örnek:</p>



<p class="wp-block-paragraph">@Autowired</p>



<p class="wp-block-paragraph">@Qualifier(“bmw”)</p>



<p class="wp-block-paragraph">Araba digerAraba;</p>



<p class="wp-block-paragraph">Burada, varsayılan Mercedes olsa bile özel olarak BMW isteniyor.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>React – Önemli Notlar</title>
		<link>https://www.alperergun.site/react-onemli-notlar/</link>
		
		<dc:creator><![CDATA[ae_5206]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 20:56:20 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.alperergun.site/?p=89</guid>

					<description><![CDATA[React Kurulumu: İlk olarak node.js kurulumu gerekmektedir.” https://nodejs.org/en” Ayrıca React NPM aracı gerekmektedir. NPM aracı node.js içinde yer almaktadır. Projemizin içine girip, vs koda da açabiliriz. Projemizin klasöründeyken “code .” yazarsak projemiz otomatikmen vs code da açılır. YA da projemizin olduğu klasörü Windows penceresinden açıp, url kısmına cmd yazarak terminal de react projemizin olduğu klasör [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1047" height="692" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-28.jpg" alt="" class="wp-image-90"/></figure>



<ul class="wp-block-list">
<li>React, kullanıcı arayüzü tasarlayabileceğimiz bir Javascript kütüphanesidir.</li>



<li>Single Page Application yapısını kullanır.</li>



<li>Tekrar kullanılabilir UI Component’ leri oluşturmamıza olanak sağlar.</li>



<li>React, Facebook tarafından geliştirilmiştir.</li>



<li>DOM yerine virtual DOM yapısını kullanır. Virtual DOM: Gerçek DOM’ un bellek deki kopyasıdır. Virtual DOM performans arttırır.</li>



<li>React, memory de VIRTUAL DOM oluşturur. Browser’ ın yapısına direkt müdahale etmek yerine virtual DOM oluşturur ve gerekli manipülasyonu sağlar. Virtual DOM, react’ ın&nbsp; en güzel özelliğidir.</li>



<li>React sadece değişmesi gereken alanı değiştirir. Nerede değişiklik yapılması gerekiyorsa sadece orayı bulur ve onu değiştirir.</li>



<li>React Component tabanlı bir kütüphanedir. Yani web arayüzümüzde bir çok component bulunabilir</li>
</ul>



<p class="wp-block-paragraph">React Kurulumu:</p>



<p class="wp-block-paragraph">İlk olarak node.js kurulumu gerekmektedir.” <a href="https://nodejs.org/en">https://nodejs.org/en</a>”</p>



<p class="wp-block-paragraph">Ayrıca React NPM aracı gerekmektedir. NPM aracı node.js içinde yer almaktadır.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">Projemizin içine girip, vs koda da açabiliriz. Projemizin klasöründeyken “code .” yazarsak projemiz otomatikmen vs code da açılır.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="687" height="165" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-29.jpg" alt="" class="wp-image-91"/></figure>



<p class="wp-block-paragraph">YA da projemizin olduğu klasörü Windows penceresinden açıp, url kısmına cmd yazarak terminal de react projemizin olduğu klasör açılır.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1065" height="398" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-30.jpg" alt="" class="wp-image-92"/></figure>



<p class="wp-block-paragraph">Terminal ekranında&nbsp; “ npx create-react-app &nbsp;my-react-app” yazarak projemizi başlatabiliriz.</p>



<p class="wp-block-paragraph">my-react-app: projeye verdiğimiz isim, istersek mahmut ismini verebiliriz.</p>



<p class="wp-block-paragraph">Son olarak vc Code da teminal açıp, projemizin olduğu klasörde “ <strong>npm start</strong>“ yazarak react projemizi &nbsp;tarayıcıda <a href="http://localhost:3000/">http://localhost:3000/</a> da çalıştırırız.</p>



<p class="wp-block-paragraph"><strong>Npm:</strong> Javascript kütüphaneleridir.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1057" height="582" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-31.jpg" alt="" class="wp-image-93"/></figure>



<p class="wp-block-paragraph"><strong>NOT:</strong> Başlattığımız projeden çıkmak için “ <strong>Ctrl + C</strong> ” tuşuna basabiliriz.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><strong>Package.json dosyası: </strong>npm paketlerini yönetmek için kullandığımız manifesto dosyasıdır. Projemizin ismi, versiyonları gibi bilgiler içermektedir.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1046" height="755" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-32.jpg" alt="" class="wp-image-94"/></figure>



<p class="wp-block-paragraph"><strong>İndex.js dosyası:</strong> projemizi oluşturduğumuz zaman otomatikman oluşan kod satırı &nbsp;yani component aşağıdaki gibidir. React da kod yazarken index.js de dedğişiklik yapılmaz. Bu yazılı olmayan kuraldır. Değişiklik App.js de yapılır.</p>



<p class="wp-block-paragraph">Aşağıdaki kod satırı id’ si root olan div in içine &nbsp;“App” component’ ini render eder.</p>



<p class="wp-block-paragraph">const root = ReactDOM.createRoot(document.getElementById(‘root’));</p>



<p class="wp-block-paragraph">root.render();</p>



<p class="wp-block-paragraph">Uygulamamızın çalışmasını sağlayan component ler projemizde “src” klasörünün içinde aşağıdaki ilgili yer almaktadır.</p>



<p class="wp-block-paragraph"><strong>NOT:</strong><strong> Package.json dosyasında, aşağıdaki satırdaki kod değişikliği ile PORT numarasını değiştirebiliriz.</strong></p>



<p class="wp-block-paragraph">“start”: ” set PORT= 5005 &amp;&amp; react-scripts start”,</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1053" height="493" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-33.jpg" alt="" class="wp-image-96"/></figure>



<p class="wp-block-paragraph"><strong>UYARI:</strong> React da kod yazarken index.js de değişiklik yapılmaz. Bu yazılı olmayan kuraldır. Değişiklik App.js de yapılır.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><strong>React’ de Değişken Türleri</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1047" height="542" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-34jpg.jpg" alt="" class="wp-image-100"/></figure>



<p class="wp-block-paragraph">–&nbsp; const sabit (değişmeyen ) değişkenler içindir.</p>



<p class="wp-block-paragraph">–&nbsp; let değiştirilebilir değişkenler içindir.</p>



<p class="wp-block-paragraph">–&nbsp; const olan bir diziyi başka bir const olan dizi ile EŞİTLEYEMEYİZ.</p>



<p class="wp-block-paragraph">–&nbsp; let olan bir diziyi başka bir let dizi ile EŞİTLENEBİLİR.</p>



<p class="wp-block-paragraph"><strong>Örnek: </strong>değişkenler</p>



<p class="wp-block-paragraph">import ‘./App.css’;</p>



<p class="wp-block-paragraph">function App() {</p>



<p class="wp-block-paragraph">&nbsp;const x = 58e-5; &nbsp;// 0,00058 demektir</p>



<p class="wp-block-paragraph">&nbsp;const y = 25/0; &nbsp;// sonuç: “infinity”</p>



<p class="wp-block-paragraph">&nbsp;const z = 25/”ali”; &nbsp;// sonuç: “Nan”</p>



<p class="wp-block-paragraph">&nbsp;const hes = 0xff; &nbsp;// sonuç: 255</p>



<p class="wp-block-paragraph">&nbsp;const a = 1.589647;&nbsp; // {a.toFixed(2)} = 1,59</p>



<p class="wp-block-paragraph">&nbsp;const b = “22”-7;</p>



<p class="wp-block-paragraph">&nbsp; return (</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &lt;div className=’App’&gt;</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; &lt;h3&gt;{b}&lt;/h3&gt;</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &lt;/div&gt;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp; );</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">export default App;</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">FONKSİYONLAR</p>



<p class="wp-block-paragraph"><strong>Array Fonksiyon:</strong></p>



<pre class="wp-block-code"><code>const hello = function(){

&nbsp; return "Hello World"

}</code></pre>



<p class="wp-block-paragraph">yukarıdaki standart fonksiyon aşağıdaki ok fonksiyonu ile yazılabilir:</p>



<pre class="wp-block-code"><code>const hello1 = () =&gt; {

&nbsp; return "Hello world with arrow function" ;

}

</code></pre>



<p class="wp-block-paragraph"><strong>Örnek:</strong> 4 işlem yapan arrow fonksiyon</p>



<pre class="wp-block-code"><code>const merhaba = isim =&gt;  "Merhaba " + isim;
const dortIslem = (sayi1, sayi2) =&gt; {

  const top = sayi1 + sayi2;
  const cikart = sayi1 - sayi2;
  const bol = sayi1 / sayi2;
  const carp = sayi1 * sayi2;
  
 	 return &#91;top,cikart,bol,carp];  //Destructuring
}
function App() {

  const &#91;top,cikart,bol,carp]= dortIslem(3,5);
 
  return (

    &lt;div className='App'&gt;
      &lt;h3&gt; {top}  &lt;/h3&gt; 
      &lt;h3&gt;{carp}&lt;/h3&gt;
      &lt;h4&gt;{merhaba("Alper")}&lt;/h4&gt;
    &lt;/div&gt;
  );
}

export default App;

</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="542" height="631" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-35.jpg" alt="" class="wp-image-102"/></figure>



<p class="wp-block-paragraph"><strong>Map():</strong> Orijinal diziyi bozmadan, diziye işlem uygulayarak yeni dizi oluşturur. Yani mevcut diziyi bozmadan dizide değişiklikler yapmamızı sağlar.</p>



<p class="wp-block-paragraph"><strong>NOT:</strong> obj leri map() fonksiyonu ile yazamayız !</p>



<p class="wp-block-paragraph"><strong>Örnek:</strong> map fonksiyonu</p>



<pre class="wp-block-code"><code>import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const root = ReactDOM.createRoot(document.getElementById('root'));

const myArray = &#91;1,2,3,4];    // Dizi oluşturduk

const myList = myArray.map((val =&gt; val * 2));

console.log(myList);

root.render(
  
  &lt;h3&gt;Merhaba&lt;/h3&gt;
);

reportWebVitals();

</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="315" height="257" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-36.jpg" alt="" class="wp-image-104"/></figure>



<p class="wp-block-paragraph"><strong>Filter() Metodu</strong>:</p>



<p class="wp-block-paragraph">React’te filtreleme, adından da anlaşılacağı gibi bir şeydir. Bir dizide döngü oluşturma ve sağladığınız bir koşula göre o dizinin içindeki öğeleri dahil etme veya hariç tutma işlemidir. ‘Filter’ metodu dizi elemanlarını şartlı bir duruma tabi tutarak şartı sağlayan elemanları tamamen yeni bir dizi içinde tutarak şartı sağlamayanları filtrelemeye tabi tutmamızı sağlar.</p>



<p class="wp-block-paragraph">‘Map’ metoduna benzer bir söz dizimine sahiptir ancak <em>koşulun</em> doğru ya da yanlış olarak değerlendirmesine göre işlemleri yürütür.</p>



<p class="wp-block-paragraph"><strong>Örnek: </strong>Filter() kullanımı – İsminde J harfi olanları filtrele</p>



<pre class="wp-block-code"><code>import React from 'react';
const names = &#91;'James', 'John', 'Paul', 'Ringo', 'George'];
function App() {
  return (
    &lt;div>
      {names.filter(name => name.includes('J')).map(filteredName => (
        &lt;li>
          {filteredName}
        &lt;/li>
      ))}
    &lt;/div>
  );
}
export default App;

<a href="https://www.alperergun.site/category/uncategorized/"></a></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><strong>React’ de Değişken Türleri</strong></p>



<p class="wp-block-paragraph">–&nbsp; const sabit (değişmeyen ) değişkenler içindir.</p>



<p class="wp-block-paragraph">–&nbsp; let değiştirilebilir değişkenler içindir.</p>



<p class="wp-block-paragraph">–&nbsp; const olan bir diziyi başka bir const olan dizi ile EŞİTLEYEMEYİZ.</p>



<p class="wp-block-paragraph">–&nbsp; let olan bir diziyi başka bir let dizi ile EŞİTLENEBİLİR.</p>



<p class="wp-block-paragraph"><strong>Örnek: </strong>değişkenler</p>



<p class="wp-block-paragraph">import ‘./App.css’;</p>



<p class="wp-block-paragraph">function App() {</p>



<p class="wp-block-paragraph">&nbsp;const x = 58e-5; &nbsp;// 0,00058 demektir</p>



<p class="wp-block-paragraph">&nbsp;const y = 25/0; &nbsp;// sonuç: “infinity”</p>



<p class="wp-block-paragraph">&nbsp;const z = 25/”ali”; &nbsp;// sonuç: “Nan”</p>



<p class="wp-block-paragraph">&nbsp;const hes = 0xff; &nbsp;// sonuç: 255</p>



<p class="wp-block-paragraph">&nbsp;const a = 1.589647;&nbsp; // {a.toFixed(2)} = 1,59</p>



<p class="wp-block-paragraph">&nbsp;const b = “22”-7;</p>



<p class="wp-block-paragraph">&nbsp; return (</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &lt;div className=’App’&gt;</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; &lt;h3&gt;{b}&lt;/h3&gt;</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &lt;/div&gt;</p>



<p class="wp-block-paragraph">&nbsp;&nbsp; );</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">export default App;</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">FONKSİYONLAR</p>



<p class="wp-block-paragraph"><strong>Array Fonksiyon:</strong></p>



<pre class="wp-block-code"><code>const hello = function(){

&nbsp; return "Hello World"

}</code></pre>



<p class="wp-block-paragraph">yukarıdaki standart fonksiyon aşağıdaki ok fonksiyonu ile yazılabilir:</p>



<pre class="wp-block-code"><code>const hello1 = () =&gt; {

&nbsp; return "Hello world with arrow function" ;

}

</code></pre>



<p class="wp-block-paragraph"><strong>Örnek:</strong> 4 işlem yapan arrow fonksiyon</p>



<pre class="wp-block-code"><code>const merhaba = isim =&gt;  "Merhaba " + isim;
const dortIslem = (sayi1, sayi2) =&gt; {

  const top = sayi1 + sayi2;
  const cikart = sayi1 - sayi2;
  const bol = sayi1 / sayi2;
  const carp = sayi1 * sayi2;
  
 	 return &#91;top,cikart,bol,carp];  //Destructuring
}
function App() {

  const &#91;top,cikart,bol,carp]= dortIslem(3,5);
 
  return (

    &lt;div className='App'&gt;
      &lt;h3&gt; {top}  &lt;/h3&gt; 
      &lt;h3&gt;{carp}&lt;/h3&gt;
      &lt;h4&gt;{merhaba("Alper")}&lt;/h4&gt;
    &lt;/div&gt;
  );
}

export default App;


</code></pre>



<p class="wp-block-paragraph"><strong>Map():</strong> Orijinal diziyi bozmadan, diziye işlem uygulayarak yeni dizi oluşturur. Yani mevcut diziyi bozmadan dizide değişiklikler yapmamızı sağlar.</p>



<p class="wp-block-paragraph"><strong>NOT:</strong> obj leri map() fonksiyonu ile yazamayız !</p>



<p class="wp-block-paragraph"><strong>Örnek:</strong> map fonksiyonu</p>



<pre class="wp-block-code"><code>import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const root = ReactDOM.createRoot(document.getElementById('root'));

const myArray = &#91;1,2,3,4];    // Dizi oluşturduk

const myList = myArray.map((val =&gt; val * 2));

console.log(myList);

root.render(
  
  &lt;h3&gt;Merhaba&lt;/h3&gt;
);

reportWebVitals();

</code></pre>



<p class="wp-block-paragraph"><strong>Filter() Metodu</strong>:</p>



<p class="wp-block-paragraph">React’te filtreleme, adından da anlaşılacağı gibi bir şeydir. Bir dizide döngü oluşturma ve sağladığınız bir koşula göre o dizinin içindeki öğeleri dahil etme veya hariç tutma işlemidir. ‘Filter’ metodu dizi elemanlarını şartlı bir duruma tabi tutarak şartı sağlayan elemanları tamamen yeni bir dizi içinde tutarak şartı sağlamayanları filtrelemeye tabi tutmamızı sağlar.</p>



<p class="wp-block-paragraph">‘Map’ metoduna benzer bir söz dizimine sahiptir ancak <em>koşulun</em> doğru ya da yanlış olarak değerlendirmesine göre işlemleri yürütür.</p>



<p class="wp-block-paragraph"><strong>Örnek: </strong>Filter() kullanımı – İsminde J harfi olanları filtrele</p>



<pre class="wp-block-code"><code>import React from 'react';
const names = &#91;'James', 'John', 'Paul', 'Ringo', 'George'];
function App() {
  return (
    &lt;div&gt;
      {names.filter(name =&gt; name.includes('J')).map(filteredName =&gt; (
        &lt;li&gt;
          {filteredName}
        &lt;/li&gt;
      ))}
    &lt;/div&gt;
  );
}
export default App;
</code></pre>



<p class="wp-block-paragraph"><strong>Örnek: </strong>Filter() kullanımı ve Mantıksal Opreratör</p>



<pre class="wp-block-code"><code>--- App.js –
mport './App.css';
import Liste from './components/Liste';
import Liste2 from './components/Liste2';

function App() {

 const meyveler = &#91; "elma","armut","erik"];

 const ilaclar =&#91;

      {   id:1,  adı:"aferin", stok:5   }, 
      {   id:2,  adı:"parol", stok:3   }, 
      {   id:3,  adı:"voltaren", stok:8   },                         
      {   id:4,  adı:"illadin", stok:1   }                         
];
// const meyveler= &#91;];
  return (

    &lt;div className="App"&gt;
      
      {/* &lt;Liste meyveler={meyveler}  /&gt; */}
      &lt;Liste2 ilaclar={ilaclar}/&gt;

    &lt;/div&gt;
  );
}

export default App;



--- Liste2.js ----
import React from 'react'

const Liste2 = ({ilaclar}) =&gt; {
 return (
    &lt;div&gt;
        &lt;h2&gt;Eczannedeki ilaçlarımız &lt;/h2&gt;
        &lt;ul&gt;  
           {ilaclar.map((ilac) =&gt; &lt;li key={ilac.id}&gt; {ilac.adı}, stok seviyesi:{ilac.stok} &lt;/li&gt; ) }
        &lt;/ul&gt;      
    &lt;/div&gt;   
  )
}export default Liste2
--- Liste.jsx ---
import React from "react";

const Liste = ({ meyveler }) =&gt; {
  return (
    &lt;div&gt;
      &lt;h3&gt;Sepetimde {meyveler.length} tane meyve var &lt;/h3&gt;
      {meyveler.length &gt; 0 &amp;&amp; ( // Mantıksal operatör
        &lt;ul&gt;
          {
          meyveler
            .filter((meyve) =&gt; meyve === "elma")
            .map((meyve) =&gt; (
              &lt;li&gt;{meyve}&lt;/li&gt;
            ))
            }
        &lt;/ul&gt;
      )}
    &lt;/div&gt;
  );
};

export default Liste;

çıktı:</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="388" height="303" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-37.jpg" alt="" class="wp-image-106"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="511" height="481" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-38.jpg" alt="" class="wp-image-107"/></figure>



<p class="wp-block-paragraph"><strong>Spread Operatörü:</strong> Spread operatörü olarak bilinen <strong>üç nokta</strong> ( … ), uygulamalarınızdaki durum, özellikler ve dizileri yönetmek için güçlü bir araçtır. Spread sözdizimi, nesneleri birleştirme, dizileri kopyalama ve bileşenlere özellikler aktarma gibi birçok yaygın görevi basitleştirir.</p>



<p class="wp-block-paragraph"><strong>Örnek: </strong>Map() ve Destructuring</p>



<pre class="wp-block-code"><code>import './App.css';

function App() {

  const dizi= &#91;1,2,3,4,5];
  
  const obj = {
  
      isim:"Alper",
      soyad:"Ergün",
      yas : 41,
      sehir:"Ankara",
      aile : &#91;"Arslan","Nevin","Mehtap","Mayıs"]
  
  };
  
  const mymap = dizi.map((i) =&gt;  i = i*2+ "," );

 function yazdir({isim,soyad,yas,sehir,aile}){  //Destructing

      return &lt;p&gt;Merhaba  {isim} {soyad}, yaşın:{yas}, yaşadığın şehir: {sehir} &lt;/p&gt;;

 }
  
    return (
      &lt;div className="App"&gt;
        &lt;h4&gt;Merhaba&lt;/h4&gt;
  
       
        {yazdir(obj)}
      &lt;/div&gt;
    );
  }
  
  export default App;
</code></pre>



<p class="wp-block-paragraph"><strong>Örnek: </strong>Spread operatörü</p>



<pre class="wp-block-code"><code>import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const root = ReactDOM.createRoot(document.getElementById('root'));

const users = &#91;
 {
  name: "Muammer",
  lastname: "Karataş"
 },
 {
  name: "Alper",
  lastname: "Ergün"

 }
]

const users2 = &#91; ...users];
const user = {...users&#91;0]};

root.render(
  
  &lt;h3&gt;Merhaba&lt;/h3&gt;
);

reportWebVitals();
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph"><strong>PROPS</strong></p>



<p class="wp-block-paragraph">Props’un temel amacı, <strong>componentler arasında veri akışını sağlamak ve componentlerin tekrar kullanılabilmesini kolaylaştırmaktır</strong>. Props, componentlere veri gönderirken, component içerisinde değiştirilmesini engellemektedir. Böylece, her component tek bir görev üstlenir ve sadece o görevle ilgili işlemleri yapar.</p>



<p class="wp-block-paragraph">Props kullanmak, componentler arasında daha esnek ve kolay bir veri akışı yapmanızı sağlar. Ayrıca, componentlerin tekrar kullanılabilmesini kolaylaştırır ve componentlere verilen verilerin component içerisinde değiştirilmesini engelleyerek uygulamanın daha güvenli hale gelmesine yardımcı olur.</p>



<p class="wp-block-paragraph">Aşağıdaki diyagramda Students adında bi <strong>alt</strong> <strong>componentimiz</strong> var. Bu alt <strong>componente</strong> ana <strong>componentten</strong> gelen “studentName” <strong>props</strong>’ u geçilmiştir. Böylelikle students <strong>componentinde</strong> studentName props değeri “Tom” olarak atanmıştır.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="636" height="202" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-39.jpg" alt="" class="wp-image-108"/></figure>



<p class="wp-block-paragraph"><strong><em>Sonuç Props’lar;</em></strong></p>



<ul class="wp-block-list">
<li><strong><em>Properties kelimesinden üretilmiş ve sadece React ortamında kullanılan özel bir kelimedir.</em></strong></li>



<li><strong><em>React bileşenlerinde fonksiyon değişkenleri gibi verilirler.</em></strong></li>



<li><strong><em>Kullanımı, HTML ‘deki attribute kullanımı ile aynıdır.</em></strong></li>



<li><strong><em>Sadece tek bir yönde yani Ana Bileşenden — Alt Bileşene akarlar.</em></strong></li>



<li><strong><em>Alt bileşen içinde sadece okunabilirler (read-only, immutable), değiştirilemezler.</em></strong></li>
</ul>



<p class="wp-block-paragraph"><strong>Örnek:</strong> Props – Props.jsx deki ürün bilgileri dinamik hale getiriyoruz.</p>



<p class="wp-block-paragraph">— Props1.jsx&nbsp; —-</p>



<pre class="wp-block-code"><code>import React from "react";

const Props1 = (props) =&gt; { //props tüm parametreleri kapsar
                                                 // props yerine mahmut yazsak da olur, istediğimiz ismi verebiliriz.

    return(

  &lt;div&gt;
    &lt;div&gt;Ürün Bilgileri&lt;/div&gt;
    &lt;div&gt;
      &lt;div&gt;İsim: {props.Urun_adı} &lt;/div&gt;
      &lt;div&gt;Fiyat: {props.fiyatı} &lt;/div&gt;
    &lt;/div&gt;
   
  &lt;/div&gt;
)};
export default Props1;
</code></pre>



<p class="wp-block-paragraph">— App.js —</p>



<pre class="wp-block-code"><code>import logo from './logo.svg';

import './App.css';

import Props1 from './components/Props1';

function App() {

&nbsp; return (

&nbsp; &nbsp; &lt;div className="App"&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;Props1 Urun_adı="Ayakkabı" fiyatı={3200} &nbsp;/&gt;

&nbsp; &nbsp; &lt;/div&gt;

&nbsp; );

}export default App;</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="198" height="107" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-40.jpg" alt="" class="wp-image-109"/></figure>



<p class="wp-block-paragraph"><strong>Örnek:</strong> Props – obje</p>



<p class="wp-block-paragraph">— User.js —</p>



<pre class="wp-block-code"><code>import React from 'react'

const User = (props) =&gt; {

&nbsp; return (

&nbsp; &nbsp; &lt;div&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;h3&gt;{props.ad} &nbsp;&lt;/h3&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;h3&gt;{props.yas} &nbsp;&lt;/h3&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &lt;h3&gt;{props.memleket} &nbsp;&lt;/h3&gt;

&nbsp; &nbsp; &lt;/div&gt;

&nbsp; )

}</code></pre>



<p class="wp-block-paragraph">export default User;</p>



<p class="wp-block-paragraph">—&nbsp; App.js&nbsp; —-</p>



<pre class="wp-block-code"><code>import logo from './logo.svg';

import './App.css';

import User from './components/User';

function App() {

&nbsp; const data =

&nbsp; &nbsp; {

&nbsp;&nbsp;&nbsp; &nbsp;name:"Alper",

&nbsp; &nbsp; &nbsp; age:41,

&nbsp; &nbsp; &nbsp; city:"Ordu"

&nbsp; &nbsp; };

&nbsp; return (

&nbsp; &nbsp; &lt;div className="App"&gt;

&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;User ad={data.name} yas={data.age} memleket={data.city} /&gt;

&nbsp; &nbsp; &lt;/div&gt;

&nbsp; );

}

export default App;
</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="111" height="120" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-41.jpg" alt="" class="wp-image-110"/></figure>



<p class="wp-block-paragraph"><strong>Örnek:</strong> Props – obje kullanımı</p>



<p class="wp-block-paragraph">— Product.jsx&nbsp; —</p>



<pre class="wp-block-code"><code>import React from 'react';
import Sepet from './Sepet'

const Product = (props) =&gt; {

  return (
    &lt;div&gt;
        
        &lt;li&gt;{props.isim} - {props.adet} adet - {props.fiyat} tl&lt;/li&gt;
    &lt;/div&gt;
  );
};
export default Product;

--- Sepet.jsx ---
import React from 'react'
import Product from './Product';

const Sepet = () =&gt; {


    const urunler = 
        {
            isim: 'Klavye',
            adet: 1,
            fiyat: 235
        };
    

  return (
    &lt;div&gt;
        &lt;h3&gt; Ürün Bilgileri &lt;/h3&gt; 
        &lt;Product isim={urunler.isim} adet={urunler.adet} fiyat={urunler.fiyat}/&gt;
    &lt;/div&gt;
  )
}

export default Sepet;
</code></pre>



<p class="wp-block-paragraph">— App.js —</p>



<pre class="wp-block-code"><code>import logo from './logo.svg';
import './App.css';
import Sepet from './components/Sepet';
import Product from './components/Product';

function App() {
  const data = 
    {

      name:"Alper",
      age:41,
      city:"Ordu"
   
    };

  return (
    &lt;div className="App"&gt;
      
       
        {/* &lt;User ad={data.name} yas={data.age} memleket={data.city} /&gt;

        &lt;User2 name="ahmet" age={21} city=" chicago" /&gt;
        &lt;User2 name="umoş" age={35} city=" samsun" /&gt; */}

          &lt;Sepet  /&gt;
    &lt;/div&gt;
  );
}

export default App;
</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="267" height="110" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-42.jpg" alt="" class="wp-image-112"/></figure>



<p class="wp-block-paragraph"><strong>Örnek:</strong> Props – Dizi içinde obje kullanımı</p>



<p class="wp-block-paragraph">—- Personel.jsx —</p>



<pre class="wp-block-code"><code>import React from 'react'

const Personel = (props) =&gt; {


    return (
        &lt;div&gt;
            &lt;h3&gt;Personel Listesi&lt;/h3&gt;
            &lt;li&gt;ad-soyad: {props.insanKaynaklari&#91;0].isim} ,
                ünvan:  {props.insanKaynaklari&#91;0].unvan} ,
                maas:  {props.insanKaynaklari&#91;0].maas} tl ,
                departman: {props.insanKaynaklari&#91;0].departman}
            &lt;/li&gt;
            &lt;li&gt;ad-soyad: {props.insanKaynaklari&#91;1].isim} ,
                ünvan:  {props.insanKaynaklari&#91;1].unvan} ,
                maas:  {props.insanKaynaklari&#91;1].maas} tl ,
                departman: {props.insanKaynaklari&#91;1].departman}

            &lt;/li&gt;
            &lt;li&gt;ad-soyad: {props.insanKaynaklari&#91;2].isim} ,
                ünvan:  {props.insanKaynaklari&#91;2].unvan} ,
                maas:  {props.insanKaynaklari&#91;2].maas} tl ,
                departman: {props.insanKaynaklari&#91;2].departman}

            &lt;/li&gt;
        &lt;/div&gt;
    )
}

export default Personel;
</code></pre>



<p class="wp-block-paragraph">— VeriTabani.jsx —</p>



<pre class="wp-block-code"><code>import React from 'react'
import Personel from './Personel';

const VeriTabani = () =&gt; {

    const insanKaynaklari = &#91;

        {
            isim:"Alper Ergün",
            unvan:"Programcı",
            maas: 40000,
            departman:"Sigorta Yazılımları"

        },
        {
            isim:"İmran gökçe",
            unvan:"VHKİ",
            maas: 39000,
            departman:"Emeklililk YAzılımları"

        },
        {
            isim:"Mahir Haluk Üstündağ",
            unvan:"Bilişim Uzmanı",
            maas: 72000,
            departman:"Musahebe Yazılımları"

        }

    ];

  return (
    &lt;div&gt;
       &lt;Personel insanKaynaklari={insanKaynaklari}/&gt;
    &lt;/div&gt;
  )
}

export default VeriTabani;
</code></pre>



<p class="wp-block-paragraph"><strong>— App.js —</strong></p>



<pre class="wp-block-code"><code>import logo from './logo.svg';
import './App.css';
import VeriTabani from './components/VeriTabani';

function App() {
  return (
    &lt;div className="App"&gt;
         &lt;VeriTabani /&gt;
    &lt;/div&gt;
  );
}

export default App;
</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="801" height="121" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-43.jpg" alt="" class="wp-image-113"/></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>JSON – Haberler.js</title>
		<link>https://www.alperergun.site/json-haberler-js/</link>
		
		<dc:creator><![CDATA[ae_5206]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 20:50:37 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.alperergun.site/?p=87</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[
<pre class="wp-block-code"><code>export default
&#91;
    {
        "isim": "Merkez Bankası Başkanı Murat Uysal'dan enflasyon açıklaması",
        "tanim": "Ekonomi Haberi",
        "icerik": "TCMB Başkanı Uysal Türkiye Bankalar Birliği üyelerine sunum yaptı. Enflasyon görünümünde iyileşmenin sürdüğüne dikkat çeken Uysal, parasal sıkılığın düzeyinin enflasyondaki düşüşün sürekliliğini sağlayacak şekilde belirleneceğini ifade etti.",
        "tarih": "29 Ağustos 2019",
        "url": "http://finans.mynet.com/haber/detay/ekonomi/merkez-bankasi-baskani-murat-uysal-dan-enflasyon-aciklamasi/320825/",
        "kategori":"Ekonomi",
        "sehir":"Türkiye",
        "resim": "https://imgrosetta.mynet.com.tr/file/10193612/10193612-728xauto.jpg"
    },
    {
        "isim": "Emevi Camiinde Tarihi Anlar",
        "tanim": "Dış Gündem Haberi",
        "icerik": "Emevi Camii'nde tarihi anlar: Türk bayrağını öpüp Erdoğan'a teşekkür ettiler... Özgür Suriye halkı Esad'ın devrilmesinden sonra ilk cuma namazını kıldı.",
        "tarih": "13 Aralık 2024",
        "url": "http://finans.mynet.com/haber/detay/ekonomi/motorin-ve-benzine-zam/319559/",
        "kategori":"Dış Gündem",
        "sehir":"Suriye",
        "resim": "https://image.hurimg.com/i/hurriyet/75/750x422/675c11cb58799e22650420f9.jpg"
    },
    {
        "isim": "Dışişleri Bakanı Hakan Fidan Antony Blinken ile bir araya geldi: 'Önceliğimiz Suriye'de istikrar",
        "tanim": "Dünya Haberi",
        "icerik": "Dışişleri Bakanı Hakan Fidan, ABD Dışişleri Bakanı Antony Blinken ile yaptığı kritik görüşme sonrası düzenlenen ortak basın toplantısında gündeme dair değerlendirmelerde bulundu. Bakan Fidan burada yaptığı açıklamada Suriye ve Gazze'deki durumu ABD Dışişleri Bakanı Anthony Blinken ile görüştük. Suriye'nin geleceğinde olası Türk ve Amerikan rolünü tartıştık. Önceliğimiz Suriye'de istikrarın sağlanması. Terörizmin yer bulmaması, DEAŞ'ın PKK'nın orada hakim olmaması önceliklerimiz arasında. Bunlarla ilgili neler yaparız, ortak endişeler neler bunları konuştuk dedi.",
        "tarih": "29 Ağustos 2019",
        "url": "https://www.hurriyet.com.tr/dunya/son-dakika-tum-gozler-ankarada-disisleri-bakani-hakan-fidan-abdli-mevkidasi-blinken-ile-bir-araya-geldi-42624596",
        "kategori":"Ekonomi",
        "sehir":"Türkiye",
        "resim": "https://image.hurimg.com/i/hurriyet/75/770x0/675bde73c8198272f9dffb0d.jpg"
    },
    {
        "isim": "Hazine 3 aylık iç borçlanma stratejisini açıkladı",
        "tanim": "deniz kıyıları, Orta ve Doğu Akden sağanak ve gök gürültülü sağanak bekleniyor.",
        "icerik": "Hazine ve Maliye Bakanlığı, eylül-kasım döneminde 38,8 milyar liralık iç borç servisine karşılık 30,7 milyar liralık iç borçlanmaya gidecek.",
        "tarih": "29.08.2019 - 17:33",
        "url": "http://bigpara.hurriyet.com.tr/haberler/ekonomi-haberleri/hazine-3-aylik-ic-borclanma-stratejisini-acikladi_ID1457083/",
        "kategori":"Ekonomi",
        "sehir":"Türkiye",
        "resim": "http://i2.hurimg.com/i/hurriyet/75/750x422/5d62b93418c7732ac8e343a0.jpg"
    },
    {
        "isim": "Bakan Albayrak'tan Türk Lirası referans faiz oranı açıklaması",
        "tanim": "Ekonomi Haberi",
        "icerik": "Bakan Albayrak, Finansal mimarimizde Türk Lirası çalışabilmemiz için Bankalarımızın faiz riskini yönetmelerinde önemli bir eksikliği gidermek üzere TL referans faizi TLREF, BİST bünyesinde oluşturuldu açıklamasında bulundu.",
        "tarih": "25.08.2019 - 19:37",
        "url": "http://bigpara.hurriyet.com.tr/haberler/ekonomi-haberleri/bakan-albayrak-tl-referans-faizi-tlref-bist-bunyesinde-olusturuldu_ID1457084/",
        "kategori":"Ekonomi",
        "sehir":"Türkiye",
        "resim": "http://i2.hurimg.com/i/hurriyet/75/750x422/5d62b93418c7732ac8e343a0.jpg"
    },
    {
        "isim": "Petrol ithalatı haziranda azaldı",
        "tanim": "Ekonomi Haberleri",
        "icerik": "Türkiye'nin toplam petrol ithalatı haziranda geçen yılın aynı ayına göre yüzde 7 azalarak 3 milyon 151 bin 387 tona geriledi",
        "tarih": "25.08.2019 - 19:37",
        "url": "http://bigpara.hurriyet.com.tr/haberler/emtia-haberleri/petrol-ithalati-haziranda-azaldi_ID1457088/",
        "kategori":"Ekonomi",
        "sehir":"Türkiye",
        "resim": "http://i2.hurimg.com/i/hurriyet/75/750x422/5d62b93418c7732ac8e343a0.jpg"
    },
    {
        "isim": "İngiltere Kralı 3. Charles, kanseri yenmek için kırmızı eti hayatından tamamen çıkardı",
        "tanim": "Sağlık Haberleri",
        "icerik": "Kral Charles ın iyileşmesini hızlandırmak ve kanseri yenmek amacıyla kırmızı eti tamamen diyetinden çıkardığı ortaya çıktı.Kral'a, ocak ayında kanser teşhisi konuldu.Tedavisi süresince resmi devlet görevlerine devam etti ancak 3 ay sonra halka açık etkinliklere katılmaya başladı.Kral Charles, her zaman ağır gıdalar yerine basit ve organik besinleri tercih etti, her zaman sağlıklı yaşam konusunda kararlı oldu ancak şimdi sağlığını daha da ciddiye alıyor.",
        "tarih": "25.08.2019 - 19:37",
        "url": "https://www.hurriyet.com.tr/aile/ingiltere-krali-3-charles-kanseri-yenmek-icin-kirmizi-eti-hayatindan-tamamen-cikardi-uzmanlar-uyariyor-beyaz-ete-gore-10-ka-42622112/",
        "kategori":"Ekonomi",
        "sehir":"Türkiye",
        "resim": "https://image.hurimg.com/i/hurriyet/75/750x422/675bf09490076a49d9182bd5.jpg"
    },
    {
        "isim": "100 milyar dolar için ilk adım atıldı",
        "tanim": "Ekonomi Haberleri",
        "icerik": "ABD Ticaret Bakanı Wilbur Ross, 6-11 Eylül tarihlerinde Türkiye’ye yapacağı resmi ziyaret öncesinde Türk Amerikan İş Konseyi (TAİK) başkanı Mehmet Ali Yalçındağ’ı Washington’da kabul etti. Cumhurbaşkanı Erdoğan’ın ABD ile ‘100 milyar dolar’ ticaret hedefi projesinin startı Washington’da verildi",
        "tarih": "31.08.2019 - 11:08",
        "url": "http://bigpara.hurriyet.com.tr/haberler/ekonomi-haberleri/100-milyar-dolar-icin-ilk-adim-atildi_ID1457094/",
        "kategori":"Ekonomi",
        "sehir":"Türkiye",
        "resim": "http://i2.hurimg.com/i/hurriyet/75/750x422/5d62b93418c7732ac8e343a0.jpg"
    },
    {
        "isim": "Yurt dışına açılmak isteyen firmalara DEİK'ten destek",
        "tanim": "Ekonomi Haberleri",
        "icerik": "DEİK Başkanı Olpak, “İhracat Ana Planına Destek Paketi kapsamında DEİK aidatında ilk yıl için yüzde 60’lık bir indirim yaptık. Toplam aidatın yüzde 40’ını ödeyerek bize üye olabilecekler. İş konseylerinin kendi faaliyetleri için topladığı farklı aidat meblağı var. Oradaki aidat miktarında ise yüzde 20’lik bir indirim sağladık.” dedi.",
        "tarih": "30.08.2019 - 11:33",
        "url": "http://bigpara.hurriyet.com.tr/haberler/ekonomi-haberleri/yurt-disina-acilmak-isteyen-firmalara-deikten-destek_ID1457090/",
        "kategori":"Ekonomi",
        "sehir":"Türkiye",
        "resim": "http://i2.hurimg.com/i/hurriyet/75/750x422/5d62b93418c7732ac8e343a0.jpg"
    },

]</code></pre>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://github.com/ergunalper/Haberler-JSON/blob/main/Haberler.js
</div></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Spring’in Doğuşu ve Tarihi</title>
		<link>https://www.alperergun.site/springin-dogusu-ve-tarihi/</link>
		
		<dc:creator><![CDATA[ae_5206]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 20:48:45 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.alperergun.site/?p=83</guid>

					<description><![CDATA[J2EE standartının karmaşık ve öğrenmesi zor olması, hataya çok açık olması ve çok pahalı olması nedenleriyle yani kısaca developerın işini zorlaştırması nedeniyle yeni EJB(Enterprise Jaba Beans)’ siz veya EJB yi daha kolay ve rahat yapılar ile değiştirme arayışı içine girilmesine sebep olmuştur. J2EE’ nin sağladıklarını nasıl basit bir mimari ile sağlayabiliriz düşüncesi Spring’ in doğuşuna [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="478" height="160" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-26.jpg" alt="" class="wp-image-84"/></figure>



<p class="wp-block-paragraph">J2EE standartının karmaşık ve öğrenmesi zor olması, hataya çok açık olması ve çok pahalı olması nedenleriyle yani kısaca developerın işini zorlaştırması nedeniyle yeni EJB(Enterprise Jaba Beans)’ siz veya EJB yi daha kolay ve rahat yapılar ile değiştirme arayışı içine girilmesine sebep olmuştur.</p>



<p class="wp-block-paragraph">J2EE’ nin sağladıklarını nasıl basit bir mimari ile sağlayabiliriz düşüncesi Spring’ in doğuşuna neden olmuştur. Örneğin Hibernate de bu J2EE nin başlangıçta developerların işini kolaylaştırması için ortaya çıkmış bir yapıdır. Spring, J2EE’ nin sağladığı daha basit programlama modeliyle ortaya çıkmış bir girişimdir.</p>



<p class="wp-block-paragraph">Spring’in ilk versiyounu 2003 de çıktı. Spring 2017’deki 5. Versiyonu ile devam etmektedir.</p>



<p class="wp-block-paragraph">Java EE(JEE), bir Java standartıdır. Ve standartlar programlama dili için çok önemlidir ve olmak zorundadır.</p>



<p class="wp-block-paragraph">Spring Enhances Java(Spring, Java’yı kolaylaştırır).</p>



<p class="wp-block-paragraph">Spring Complements Java(Spring, Java’yı tamamlar). Yani Java’nın eksik yanlarını kapatır.</p>



<p class="wp-block-paragraph">Spring Competes Java(Spring, Java ile rekabet eder).</p>



<p class="wp-block-paragraph">J2EE, 1999 yılında ortaya çıkmıştır. Java EE 8, 2017 de ortaya çıkmıştır.</p>



<p class="wp-block-paragraph">Java EE 8’ in adı 2020 Kasım da değişti ve Jakarta EE 9 oldu.</p>



<p class="wp-block-paragraph">Oracle firması, Java tarafındaki sorumluluğunu sadece core Java(çekirdek java) tarafında tuttu ve onun dışındaki kısmı community ye siz geliştirin dedi.</p>



<p class="wp-block-paragraph">Java community, 2017 de “Eclipse Foundation” adı altında Java EE yi geliştirmeye başladı.</p>



<p class="wp-block-paragraph">Spring Boot, 2014 de tanıtıldı.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1057" height="690" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-27.jpg" alt="" class="wp-image-85"/></figure>



<p class="wp-block-paragraph">Kimse Java EE ni geleceği konusunda, Spring’in geleceği gibi emin değil. Bu yüzden Spring, Java EE’ ye göre daha öncü ve ortamlarda daha yaygındır. Java EE nin varlığının sebebi ise Java dünyasında standardı korumaktır.</p>



<p class="wp-block-paragraph">Spring açık kaynaklıdır. Çeşitli gerçek dünya kullanım örneklerine dayalı sürekli geri bildirim sağlayan büyük ve aktif bir topluluğa sahiptir. Bu, Spring’in çok uzun bir süre boyunca başarılı bir şekilde gelişmesine yardımcı olmuştur.</p>



<p class="wp-block-paragraph">Spring Framework modüllere ayrılmıştır. Uygulamalar ihtiyaç duydukları modülleri seçebilirler. Temelde, bir yapılandırma modeli ve bir bağımlılık enjeksiyon mekanizması da dahil olmak üzere çekirdek konteynerin modülleri bulunur.&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Java – MySQL bağlantısı kullanarak Login sayfası oluşturma</title>
		<link>https://www.alperergun.site/java-mysql-baglantisi-kullanarak-login-sayfasi-olusturma/</link>
		
		<dc:creator><![CDATA[ae_5206]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 20:45:05 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.alperergun.site/?p=72</guid>

					<description><![CDATA[Yukarıdaki gibi bir Login sayfası ile MySQL veri tabanına bağlantı kurarak kayıt atabiliriz. Öncelikle yukarıdaki gibi bir Login sayfası oluşturmak için ilk olarak ide de “Dynamic Web Project” oluşturmamız gerekiyor. Daha sonra projemizde “LoginForm.html” sayfasını oluşturuyoruz. Daha sonra LoginServlet.java isimli bir class oluşturuyoruz. Daha sonra MySQL veri tabanımız da “students” adında tablomuzu oluşturuyoruz. olmazsa olmaz [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="298" height="342" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-17.jpg" alt="" class="wp-image-73"/></figure>



<p class="wp-block-paragraph">Yukarıdaki gibi bir Login sayfası ile MySQL veri tabanına bağlantı kurarak kayıt atabiliriz.</p>



<p class="wp-block-paragraph">Öncelikle yukarıdaki gibi bir Login sayfası oluşturmak için ilk olarak ide de “Dynamic Web Project” oluşturmamız gerekiyor.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="802" height="575" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-18.jpg" alt="" class="wp-image-74"/></figure>



<p class="wp-block-paragraph">Daha sonra projemizde “LoginForm.html” sayfasını oluşturuyoruz.</p>



<pre class="wp-block-code"><code>&lt;!DOCTYPE html>
&lt;html>
&lt;head>
&lt;meta charset="UTF-8">
&lt;title>Login Page&lt;/title>
&lt;/head>
&lt;body>
&lt;form action="/LoginServlet/LoginServlet" method="post">
&lt;b>SIGN UP &lt;/b> &lt;br />&lt;br />
&lt;input type="text" name="firstName" placeholder="First Name:" required>&lt;br />&lt;br />
&lt;input type="text" name="lastName" placeholder="Last Name:" required>&lt;br />&lt;br />
&lt;input type="text" name="age" placeholder="Age:" required>&lt;br />&lt;br />
&lt;input type="email" name="email" placeholder="email:" required>&lt;br />&lt;br />
&lt;input type="password" name="password" placeholder="Password:" required>&lt;br />&lt;br />
&lt;input class="button" type="submit" value="Sign up">
&lt;/form>
&lt;/body>
&lt;/html>

</code></pre>



<p class="wp-block-paragraph">Daha sonra LoginServlet.java isimli bir class oluşturuyoruz.</p>



<p class="wp-block-paragraph"></p>



<pre class="wp-block-code"><code>import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {

String dbDriver = "com.mysql.cj.jdbc.Driver";
String dbURL = "jdbc:mysql://localhost/";
// Database name to access
String dbName = "students";
String dbUsername = "root";
String dbPassword = "";
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws UnsupportedEncodingException {

req.setCharacterEncoding("UTF-8"); 
resp.setContentType("text/html; charset=UTF-8");
// Formdan gönderilen verileri al
String firstName = req.getParameter("firstName");
String lastName = req.getParameter("lastName");
int age = Integer.parseInt(req.getParameter("age"));
String email = req.getParameter("email");
String password = req.getParameter("password");
Connection connection = null;
PreparedStatement statement = null;
ResultSet resultSet;
try {
Class.forName(dbDriver);
connection = DriverManager.getConnection(dbURL + dbName,
dbUsername,
dbPassword);
String sql = "INSERT INTO students (firstName, lastName, age, email, password) VALUES (?, ?, ?, ?, ?)";
statement = connection.prepareStatement(sql);
// Öğrenci bilgilerini veritabanına ekle
//String sql = "INSERT INTO students (first_name, last_name, age, email, password) VALUES (?, ?, ?, ?, ?)";
statement.setString(1, firstName);
statement.setString(2, lastName);
statement.setInt(3, age);
statement.setString(4, email);
statement.setString(5, password);
statement.executeUpdate();
System.out.println("Kayıt eklendi");
resp.setContentType("text/html");
PrintWriter out = resp.getWriter(); 
out.println("Kayıt eklendi :)");
} catch (Exception e) {

e.printStackTrace();
System.out.println("Kayıt olmadı, Bir Sorun VAR!!!");
}
}
}</code></pre>



<p class="wp-block-paragraph">Daha sonra MySQL veri tabanımız da “students” adında tablomuzu oluşturuyoruz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1053" height="563" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-19.jpg" alt="" class="wp-image-75"/></figure>



<p class="wp-block-paragraph">olmazsa olmaz olarak Java – Mysql bağlantımız için “mysql-connector jar” dosyasını, proje kütüphanemize eklememiz gerekmektedir. Bunun için Google a “ mysql jdbc driver “ yazarak aratalım ve bilgisayarımıza indirip “mysql-connector jar” dosyasını kütüphaneye ekliyoruz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1046" height="490" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-20.jpg" alt="" class="wp-image-76"/></figure>



<p class="wp-block-paragraph">Ayrıca  “<strong>Deployment Assembly</strong>” ye de “mysql-connector jar” dosyasını ekliyoruz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="737" height="647" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-21.jpg" alt="" class="wp-image-77"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="747" height="673" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-22.jpg" alt="" class="wp-image-78"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="765" height="667" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-23.jpg" alt="" class="wp-image-79"/></figure>



<p class="wp-block-paragraph">Son olarak “LoginForm.html” sayfasını Run ederek projemizi çalıştırıyoruz.</p>



<p class="wp-block-paragraph">Çalıştırdıktan sonra tarayıcıda çıkan login sayfasını bilgileri girdikten sonra aşağıdaki gibi students tablosuna kayıt olarak düşecektir.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="248" height="327" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-24.jpg" alt="" class="wp-image-80"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="767" height="432" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-25.jpg" alt="" class="wp-image-81"/></figure>



<p class="wp-block-paragraph">Konuyla ilgili github linki: <a href="https://github.com/ergunalper/LoginServlet">https://github.com/ergunalper/LoginServlet</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Java – MySQL Veri Tabanı Bağlantısı</title>
		<link>https://www.alperergun.site/java-mysql-veri-tabani-baglantisi/</link>
		
		<dc:creator><![CDATA[ae_5206]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 20:35:36 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.alperergun.site/?p=59</guid>

					<description><![CDATA[Eclipse de “veritabani” isminde bir proje oluşturuyoruz Oluşturduğumuz projenin src klasöründe sırasıyla “Main” ve “dbHelper” class ları oluşturuyoruz. Java da veri tabanı bağlantısı için öncelikle, “mysql-connector jar” dosyasını indirmemiz gerekli. Daha sonra bu jar dosyasını mevcut java projemizin kütüphanesine eklememiz gerekmektedir. , Bunu yapmamızın sebebi “mysql-connector jar” içindeki dosya ve sınıflara ihtiyacımız var. “mysql-connector jar” [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><p>Eclipse de “veritabani” isminde bir proje oluşturuyoruz</p>Oluşturduğumuz projenin src klasöründe sırasıyla “Main” ve “dbHelper” class ları oluşturuyoruz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1056" height="577" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-5.jpg" alt="" class="wp-image-60"/></figure>



<p class="wp-block-paragraph">Java da veri tabanı bağlantısı için öncelikle, “mysql-connector jar” dosyasını indirmemiz gerekli.</p>



<p class="wp-block-paragraph">Daha sonra bu jar dosyasını mevcut java projemizin kütüphanesine eklememiz gerekmektedir. ,</p>



<p class="wp-block-paragraph">Bunu yapmamızın sebebi “mysql-connector jar” içindeki dosya ve sınıflara ihtiyacımız var.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1052" height="651" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-7.jpg" alt="" class="wp-image-61"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1025" height="697" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-8.jpg" alt="" class="wp-image-62"/></figure>



<p class="wp-block-paragraph">“mysql-connector jar” dosyasını indirip aşağıdaki gibi kontrol ediyoruz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1055" height="663" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-9.jpg" alt="" class="wp-image-63"/></figure>



<p class="wp-block-paragraph">Daha sonra “mysql-connector jar” dosyasını projemize eklememiz gerekiyor.</p>



<p class="wp-block-paragraph">Bunu için projemizin üzerine sağ tıklayıp “Properties” menüsünü açıyoruz. Daha sonra “Java Build Path” menüsüne geliyoruz.</p>



<p class="wp-block-paragraph">Oradan “Libraries” butonuna basıp “Add External JARs…” butona basıp, bilgisayarımızdaki “mysql-connector jar” dosyasını seçiyoruz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1028" height="547" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-10.jpg" alt="" class="wp-image-64"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1052" height="532" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-11.jpg" alt="" class="wp-image-65"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1052" height="607" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-12.jpg" alt="" class="wp-image-66"/></figure>



<p class="wp-block-paragraph">Mysql de “uzaktan_egitim” isminde veritabanı oluşturup, “ogr2” adında tablomuzu hazırlıyoruz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1053" height="626" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-13.jpg" alt="" class="wp-image-67"/></figure>



<p class="wp-block-paragraph">Gerekli Jar dosyasını projemize ekledikten sonra “Main” ve “dbHelper” class larımızın içine gerekli kodları yazıyoruz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="680" height="668" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-14.jpg" alt="" class="wp-image-68"/></figure>



<p class="wp-block-paragraph"><strong>package</strong> veritabani;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.io.PrintStream;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.sql.Connection;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.sql.DriverManager;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.sql.SQLException;</p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>class</strong> dbHelper {</p>



<p class="wp-block-paragraph"><strong>static</strong> String <em>userName</em>=”root”;</p>



<p class="wp-block-paragraph"><strong>static</strong> String <em>password</em>=””;</p>



<p class="wp-block-paragraph"><strong>static</strong> String <em>dbUrl</em>=”jdbc:mysql://localhost:3306/uzaktan_egitim”;</p>



<p class="wp-block-paragraph">//?useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC</p>



<p class="wp-block-paragraph"><strong>public</strong> Connection getConnection() <strong>throws</strong> SQLException {</p>



<p class="wp-block-paragraph"><strong>return</strong> DriverManager.<em>getConnection</em>(<em>dbUrl</em>,<em>userName</em>,<em>password</em>);</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>void</strong> showErrorMessage(SQLException exception) {</p>



<p class="wp-block-paragraph">System.<strong><em>out</em></strong>.println(“Error : ” + exception.getMessage());</p>



<p class="wp-block-paragraph">System.<strong><em>out</em></strong>.println(“Error code : ” + exception.getErrorCode());</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="765" height="803" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-15.jpg" alt="" class="wp-image-69"/></figure>



<p class="wp-block-paragraph">——– Main.java ———–</p>



<p class="wp-block-paragraph"><strong>package</strong> veritabani;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.io.PrintStream;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.sql.Connection;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.sql.DriverManager;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.sql.ResultSet;</p>



<p class="wp-block-paragraph"><strong>import</strong> java.sql.SQLException;</p>



<p class="wp-block-paragraph"><strong>import</strong> com.mysql.cj.xdevapi.Statement;</p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>class</strong> Main {</p>



<p class="wp-block-paragraph"><strong>public</strong> <strong>static</strong> <strong>void</strong> main(String[] args) <strong>throws</strong> SQLException {</p>



<p class="wp-block-paragraph">Connection conn = <strong>null</strong>;</p>



<p class="wp-block-paragraph">dbHelper helper = <strong>new</strong> dbHelper();</p>



<p class="wp-block-paragraph">//Aşağıda SQL cümleciği için kullamılıyor</p>



<p class="wp-block-paragraph">java.sql.Statement statement = <strong>null</strong>;</p>



<p class="wp-block-paragraph">ResultSet resultSet;</p>



<p class="wp-block-paragraph"><strong>try</strong> {</p>



<p class="wp-block-paragraph">conn = helper.getConnection();</p>



<p class="wp-block-paragraph">//conn = DriverManager.getConnection(dbUrl,userName,password);</p>



<p class="wp-block-paragraph">System.<strong><em>out</em></strong>.println(“Bağlantı oluştu”);</p>



<p class="wp-block-paragraph">//statement = (Statement)conn.createStatement();</p>



<p class="wp-block-paragraph">statement = conn.createStatement();</p>



<p class="wp-block-paragraph">resultSet = ((java.sql.Statement) statement).executeQuery(“select * from ogr2”);</p>



<p class="wp-block-paragraph"><strong>while</strong>(resultSet.next()) {</p>



<p class="wp-block-paragraph">System.<strong><em>out</em></strong>.print(resultSet.getString(“Ad”));</p>



<p class="wp-block-paragraph">System.<strong><em>out</em></strong>.print(resultSet.getString(“Soyad”));</p>



<p class="wp-block-paragraph">System.<strong><em>out</em></strong>.print(resultSet.getString(“Memleket”));</p>



<p class="wp-block-paragraph">System.<strong><em>out</em></strong>.print(resultSet.getString(“Bolum”));</p>



<p class="wp-block-paragraph">System.<strong><em>out</em></strong>.println(“”);</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">}<strong>catch</strong>(SQLException exception) {</p>



<p class="wp-block-paragraph">helper.showErrorMessage(exception);</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph"><strong>finally</strong> {</p>



<p class="wp-block-paragraph">conn.close();</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">}</p>



<p class="wp-block-paragraph">————————————————————–</p>



<p class="wp-block-paragraph">Son olarak Main.java dosyamızı çalıştırdığımızda çıktı aşağıdaki gibi olacaktır.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="470" height="125" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-16.jpg" alt="" class="wp-image-70"/></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PHP ile Veri Çekme</title>
		<link>https://www.alperergun.site/php-ile-veri-cekme/</link>
		
		<dc:creator><![CDATA[ae_5206]]></dc:creator>
		<pubDate>Fri, 24 Apr 2026 20:13:46 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<guid isPermaLink="false">https://www.alperergun.site/?p=51</guid>

					<description><![CDATA[PHP&#160;ile istediğimiz sitenin istediğimiz kısmını çekerek&#160;sayfamızda yayınlayabiliriz. PHP ile bir sayfadan veri çekmek için&#160;file_get_contents&#160;hazır fonksiyonunu kullanıyoruz. Aşağıdaki kodu çalıştırırsak sayfayı olduğu gibi çekebiliriz. &#60;?php $url&#160;= ”&#160;https://havadurumu15gunluk.info/havadurumu/ankara-hava-durumu-15-gunluk.html“; $cekilen_veri&#160;= file_get_contents($url); echo&#160;$cekilen_veri; ?&#62; Ancak biz sayfadaki belli bir alanı almak istiyoruz. Bu durumda ne yapmalıyız? Böyle bir istediğimiz olduğunda öncelikle bir fonksiyon yazmamız gerekiyor. Ardından veri çekmek istediğim [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>PHP</strong>&nbsp;ile istediğimiz sitenin istediğimiz kısmını çekerek&nbsp;sayfamızda yayınlayabiliriz.</p>



<p class="wp-block-paragraph">PHP ile bir sayfadan veri çekmek için&nbsp;<strong>file_get_contents</strong>&nbsp;hazır fonksiyonunu kullanıyoruz. Aşağıdaki kodu çalıştırırsak sayfayı olduğu gibi çekebiliriz.</p>



<p class="wp-block-paragraph">&lt;?php</p>



<p class="wp-block-paragraph">$url&nbsp;= ”&nbsp;<a href="https://havadurumu15gunluk.info/havadurumu/ankara-hava-durumu-15-gunluk.html">https://havadurumu15gunluk.info/havadurumu/ankara-hava-durumu-15-gunluk.html</a>“;</p>



<p class="wp-block-paragraph">$cekilen_veri&nbsp;= file_get_contents($url);</p>



<p class="wp-block-paragraph"><strong>echo&nbsp;</strong>$cekilen_veri;</p>



<p class="wp-block-paragraph">?&gt;</p>



<p class="wp-block-paragraph">Ancak biz sayfadaki belli bir alanı almak istiyoruz. Bu durumda ne yapmalıyız?<br><br>Böyle bir istediğimiz olduğunda öncelikle bir fonksiyon yazmamız gerekiyor.</p>



<pre class="wp-block-code"><code><strong>function </strong>getir($baslangic, $son, $cekilmek_istenen)
{
    @preg_match_all('/' . preg_quote($baslangic, '/') .
    '(.*?)'. preg_quote($son, '/').'/i', $cekilmek_istenen, $m);
    <strong>return</strong> @$m&#91;1];
}</code></pre>



<p class="wp-block-paragraph">Ardından veri çekmek istediğim URL adresini belirliyorum.&nbsp; Ben,&nbsp;<a href="https://havadurumu15gunluk.info/havadurumu/ankara-hava-durumu-15-gunluk.html" target="_blank" rel="noreferrer noopener">https://havadurumu15gunluk.info/havadurumu/ankara-hava-durumu-15-gunluk.html</a>&nbsp;</p>



<p class="wp-block-paragraph">sayfasından Ankara’ nın anlık Hava Durumu bilgisini çekmek istiyorum. $url = ” https://havadurumu15gunluk.info/havadurumu/ankara-hava-durumu-15-gunluk.html “;</p>



<p class="wp-block-paragraph">Daha sonra öncelikle sayfanın tamamını çekmem gerektiği için yukarıda da anlattığım&nbsp;<strong>file_get_contents</strong>&nbsp;metodunu kullanıyorum. $icerik = file_get_contents($url);</p>



<p class="wp-block-paragraph">Şimdi en önemli kısma geldik. Ankara ilinin Hava Durumunu çekmek istiyoruz. Peki bunların nerede olduğunu nasıl bulacağız. Belirttiğim URL’ye giderek sağ tıklıyorum ve sayfa kaynağını görüntüle diyorum.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1048" height="607" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-1.jpg" alt="" class="wp-image-52"/></figure>



<p class="wp-block-paragraph">Sayfa kaynağı karşıma geliyor ve burada Hava durumu bilgisini bulmak için <strong>CTRL + F</strong> yaparak <strong>Ankara</strong> yazıyorum. Sonra <strong>6 Eki Per</strong> yazıp bu bilgilerine olduğu HTML etiketlerine ulaşıyorum.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1070" height="722" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-2.jpg" alt="" class="wp-image-53"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1072" height="226" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-3.jpg" alt="" class="wp-image-54"/></figure>



<p class="wp-block-paragraph">Görüldüğü gibi Etimesgut yazan yer yani bölgenin adının olduğu yer&nbsp;<strong>&lt;a&nbsp;title=”Hava Durumu Ankara”&nbsp;href=”<a rel="noreferrer noopener" href="https://havadurumu15gunluk.info/havadurumu/ankara-hava-durumu-15-gunluk.html" target="_blank">/havadurumu/ankara-hava-durumu-15-gunluk.html</a>“&gt;</strong>&nbsp;ve&nbsp; &nbsp;<strong>&lt;/a&gt;</strong>&nbsp;&nbsp; kodlarının arasında. Bu durumda başlangıcım&nbsp;<strong>&lt;a&nbsp;title=”Hava Durumu Ankara”&nbsp;href=”<a rel="noreferrer noopener" href="https://havadurumu15gunluk.info/havadurumu/ankara-hava-durumu-15-gunluk.html" target="_blank">/havadurumu/ankara-hava-durumu-15-gunluk.html</a>“&gt;</strong>&nbsp;&nbsp;ve sonum da&nbsp;<strong>&lt;/a&gt;</strong>&nbsp;&nbsp;&nbsp;olacak.</p>



<pre class="wp-block-preformatted">$bolge = getir('&lt;a title="Hava Durumu Ankara" href="/havadurumu/ankara-hava-durumu-15-gunluk.html"&gt;','&lt;/a&gt;', $icerik);</pre>



<p class="wp-block-paragraph">İstediğimiz bilgileri çektik şimdi sadece bunları göstermek kaldı. Burada dikkat etmemiz gereken nokta array olarak çektiğimiz için değişkeni buna uygun yazmak.</p>



<p class="wp-block-paragraph"><strong>$bolge</strong>&nbsp;değil de&nbsp;<strong>$ bolge[0]</strong>&nbsp;şeklinde göstermemiz gerekiyor.</p>



<p class="wp-block-paragraph">Şimdi aynı işlemi hava durumu için yapacağım. Sayfa kaynağında 17 aratıyorum.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1052" height="461" src="https://www.alperergun.site/wp-content/uploads/2026/04/Alper-Ergun-Blog-4.jpg" alt="" class="wp-image-55"/></figure>



<pre class="wp-block-preformatted">$hava_durumu = getir('&lt;span class="report-C"&gt;','&lt;/span&gt;',$icerik);<code>);</code></pre>



<p class="wp-block-paragraph">Artık herşey tamam. Sayfamı çalıştırdığımda istediğim verilerin çekildiğini görüyorum.</p>



<p class="wp-block-paragraph">&nbsp;&lt;?php</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; $url = “https://havadurumu15gunluk.info/havadurumu/ankara-hava-durumu-15- gunluk.html”;</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; $icerik = file_get_contents($url);</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; function getir($baslangic, $son, $cekilmek_istenen)</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; {</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @preg_match_all(‘/’ . preg_quote($baslangic, ‘/’) .</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ‘(.*?)’ . preg_quote($son, ‘/’) . ‘/i’, $cekilmek_istenen, $m);</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return @$m[1];</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; }</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; $bolge = getir(‘&lt;a title=”Hava Durumu Ankara”</p>



<p class="wp-block-paragraph">href=”/havadurumu/ankara-hava-durumu-15-gunluk.html”&gt;’,'&lt;/a&gt;’, $icerik);</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; $hava_durumu = getir(‘&lt;span class=”report-C”&gt;’,'&lt;/span&gt;’,$icerik);</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;echo &nbsp;$bolge[0] . “&lt;br /&gt;” ;</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; echo “&lt;b&gt;sıcaklık:&lt;/b&gt; ” . $hava_durumu[0] . &nbsp;“&lt;br /&gt;”;</p>



<p class="wp-block-paragraph">&nbsp; &nbsp; &nbsp; &nbsp; ?&gt;</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
