<?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/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>kotlin sınıflar &#8211; axisting</title>
	<atom:link href="https://axisting.com/etiket/kotlin-siniflar/feed/" rel="self" type="application/rss+xml" />
	<link>https://axisting.com</link>
	<description>Future Developer ..</description>
	<lastBuildDate>Sun, 29 Nov 2020 12:18:54 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.7.2</generator>

<image>
	<url>https://axisting.com/wp-content/uploads/2019/12/cropped-axisting-logooo-32x32.png</url>
	<title>kotlin sınıflar &#8211; axisting</title>
	<link>https://axisting.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">155372506</site>	<item>
		<title>Kotlin Sınıflarda Yapıcı Method (Constructor) &#8211; Ders 7</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflarda-yapici-method-constructor/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflarda-yapici-method-constructor/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Sat, 28 Nov 2020 12:37:59 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[internal]]></category>
		<category><![CDATA[kotlin class]]></category>
		<category><![CDATA[kotlin class parametre istemek]]></category>
		<category><![CDATA[kotlin constructor]]></category>
		<category><![CDATA[Kotlin erişilebilirlik seviyeleri]]></category>
		<category><![CDATA[kotlin güvenli kod yazma]]></category>
		<category><![CDATA[kotlin nullability]]></category>
		<category><![CDATA[kotlin sınıflar]]></category>
		<category><![CDATA[private]]></category>
		<category><![CDATA[protected]]></category>
		<category><![CDATA[public]]></category>
		<category><![CDATA[visibility modifiers]]></category>
		<category><![CDATA[yapıcı method]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=732</guid>

					<description><![CDATA[Geçen ders classların yalın halini ele aldık. Şimdi biraz daha iç yapısından, daha farklı kullanımlarından bahsedeceğiz. Parametre İstemek Parametre isteme durumu Java programlama dilinden biraz daha farklı. Java’da class ile aynı isimde bir constructor sınıfı oluşturmak zorunlu idi. Yani siz oluşturmasanız bile java kendiliğinden arka planda bu fonksiyonu oluşturuyordu. Kotlin de bu durum hem biraz [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Geçen ders classların yalın halini ele aldık. Şimdi biraz daha iç yapısından, daha farklı kullanımlarından bahsedeceğiz.</p>



<h2 class="wp-block-heading">Parametre İstemek</h2>



<p>Parametre isteme durumu Java programlama dilinden biraz daha farklı. Java’da class ile aynı isimde bir constructor sınıfı oluşturmak zorunlu idi. Yani siz oluşturmasanız bile java kendiliğinden arka planda bu fonksiyonu oluşturuyordu. Kotlin de bu durum hem biraz farklı hem de aynı aslında. Kotlinde constructor isminde bir constructor sınıfı oluşturuyoruz. Ve içerisinde aynı javadaki gibi atamalarını yapıyoruz. Örneğin yeni bir person classı oluşturalım</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class Person {

    var age  : Int
    var name : String
    var job : String

    constructor (ageInput : Int , nameInput : String , jobInput : String  ) {
        this.age = ageInput
        this.name = nameInput
        this.job = jobInput
    }
}</pre>



<p>Şimdi oncreate içinde parametreleriyle birlikte çağıralım</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val volkan : Person = Person (20 , "Volkan", "Bilgisayar Mühendisi")
        System.out.println(volkan.name)
    }</pre>



<p>Logcat&#8217;te göründüğü üzere &#8220;Volkan&#8221; yazacaktır. Person sınıfının bir nesnesi olan volkan nesnesinin name parametresini çağırmış olduk. (volkan.name ile)</p>



<p>Class tarafında ayrıca şöyle bir kolaylıkta mevcut. Class constructor methodunu direk classın yanında parantezde de oluşturabiliriz.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Class Person ( var age : Int , var name : String , var job : String) {}</pre>



<p>Görüldüğü gibi bir class’ı böyle tek satırda yazabildik. Yani constructor’ını class parantezleri içerisinde tanımladık.</p>



<h2 class="wp-block-heading">Kotlin Erişilebilirlik Seviyeleri (Visibility Modifiers)</h2>



<p><strong>Private : </strong>Sadece tanımlandığı sınıfta kullanılabilir</p>



<p><strong>Protected : </strong>private + kalıtım aldığı sınıfta kullanılabilir.</p>



<p><strong>İnternal :</strong> Bütün projeden ulaşılır. Ekstra kütüphanelerden vs. ulaşılamaz.</p>



<p><strong>Public : </strong>Her yerden ulaşılabilir. Ayrıca default değerdir. &nbsp;Herhangi bir tanımlama yapıldığında derleyici otomatik public atar.</p>



<p>Bu şekilde javada 3 olan erişilebilirlik seviyesi kotlinde 4 olarak karşımıza çıkmaktadır. Private&#8217;ın kendi class&#8217;ına özel olduğunu göstermek için küçük bir örnek yapalım. Person class içerisine </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">private  var hairColor : String = ""</pre>



<p>onCreate içerisinde bunu setlemeye çalıştığımızda </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">volkan.hairColor = "Black"</pre>



<p>HATA alacağız yani direkt olarak haircolor&#8217;u görmeyecek ve kırmızı olarak hatalı görünecektir. Ama başında eklediğimiz erişilebilirlik seviyesi olan private kaldırırsak public olacağından erişime açık olacaktır ve hata vermeyecektir.</p>



<p><strong>NOT : </strong>Şimdi o zaman ben neden private kullanayım ki diyenler olabilir. Bir değişkeni private yaparak diğer classlardan doğrudan erişimini kaldırmış oluruz. Ama dolaylı olarak setter getter fonksiyonları ile erişim sağlayabiliriz ve kodumuz hem daha okunabilir hem de daha güvenli kod haline getirmiş oluruz.</p>



<h2 class="wp-block-heading">Kotlin <strong>Nullability</strong></h2>



<p>Güvenli kod yazmak programlama dillerinde son derece önemlidir. Bir uygulama yazdığınızda bunun kullanıcaya herhangi bir crash , kesinti gibi problemler vermesini istemeyiz. Örnek verecek olursak bir değişken veya sabit initialize edilmez ise uygulama hata verip kendini kapatabilir.</p>



<p>Nullable veya non-null tipler vardır. Herhangi bir şeyi nullable yapmak için (?) kullanılır.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">        var myString : String? = null
        System.out.println (myString)
</pre>



<p>Ekranda manalı bir şey yazdırmaz. Boş manasına gelen null değerini döndürür. Ama hata da vermez. Kullanıcı uygulamayı kullanmaya rahatlıkla devam edebilir. ? kullanmasaydık hata verebilir. ? sayesinde myString hem null değer alabilir hem de String değer alabileceğini belirtmiş olduk.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""> var myAge : Int? = null

 System.out.println(myAge!! * 20)</pre>



<p>Burada uygulama bize myAge’in değerinin null olabileceğini söylüyor. Bunu tekrar düzenlemem konusunda beni uyarıyor. Eğer ben kesin olarak değer geleceğinden eminsem (!!) ekleyerek kesinliği belirtiyorum. Tabi bunun kötü bir yanı var eğer değer gelmez ise yani null bir değer gelirse uygulama hata verir. Uygulama crash olur. Şimdi daha güvenli kod yazmak üzerinde biraz daha derine inelim.</p>



<h2 class="wp-block-heading"><strong>Kotlin Güvenli Kod Yazma</strong></h2>



<p>Kotlin’de güvenli kod yazmanın anahtarı nasıl olacaktır. Eğer null değer kullanırsak null harici zorunlu bir değer isteyen işlemde uygulamamız patlıyordu. Null vermezsekte bir değer tanımlamadığımız için uygulama patlayabiliyordu. Güvenli kod yazmanın anahtarı kontrol etmektir. Bunu değer var mı yok mu şeklinde düşünebiliriz.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">        var myNumber : Int? = null
        if (myNumber != null) {
            System.out.println (myNumber*10)
        }else {
            System.out.println("myNumber is null")
        }</pre>



<p>Bir diğer yöntem ise safe call yöntemidir. Yukarıdaki ile benzer mantıkta</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">System.out.println(myNumber?.compareTo(2))</pre>



<p>Burada ise eğer denerseniz myNumber null&#8217;a eşitlendiği durumda işlem sonucunun null döndürdüğünü ama uygulamanın hata vermediğini görürsünüz.</p>



<p>3. yöntem ise <strong>Elvis</strong> yöntemidir. Bu yöntem ise tek satırda bu işlemi yap ya da belirlenen anlamsız bir değere ata mantığıdır.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">        val myResult =myNumber?.compareTo(2)?: -100
        System.out.println(myResult)
</pre>



<p>Elvis işleminde de ben null dönsün istemiyorum yerine başka bir şey dönsün istiyorsam (bu örnek için -100)  elvis kullanmış oluyorum.</p>



<p>Bu kodda da görüldüğü gibi kodun derleme hatası alma olasılığını ortadan kaldırıyoruz. Böylelikle güvenli bir kod yazmış oluyoruz.</p>



<p>Tüm sonuçların ekran görüntüsü bu şekilde  </p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="983" height="274" data-attachment-id="734" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflarda-yapici-method-constructor/attachment/kotlin-classlar-2-ciktilar/" data-orig-file="https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar.png" data-orig-size="983,274" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="kotlin-classlar-2-çıktılar" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar-300x84.png" data-large-file="https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar.png" src="https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar.png" alt="" class="wp-image-734" srcset="https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar.png 983w, https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar-300x84.png 300w, https://axisting.com/wp-content/uploads/2020/11/kotlin-classlar-2-çıktılar-768x214.png 768w" sizes="(max-width: 983px) 100vw, 983px" /></figure>



<p><strong>Github :</strong> <a href="https://github.com/axisting/KotlinSiniflar">https://github.com/axisting/KotlinSiniflar</a></p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link has-text-color has-very-light-gray-color has-background has-vivid-cyan-blue-background-color" href="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-cevrimdisi-kayit-olma-uygulamasi-offline-register-app-ders-8/">Sonraki Ders</a></div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflarda-yapici-method-constructor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">732</post-id>	</item>
		<item>
		<title>Kotlin Sınıflar (Class) &#8211; Ders 6</title>
		<link>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflar-class-ders-6/</link>
					<comments>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflar-class-ders-6/#respond</comments>
		
		<dc:creator><![CDATA[Mooph Froozy]]></dc:creator>
		<pubDate>Mon, 16 Nov 2020 15:24:48 +0000</pubDate>
				<category><![CDATA[Kotlin ile Android programlama dersleri]]></category>
		<category><![CDATA[axisting kotlin dersleri]]></category>
		<category><![CDATA[kotlin class oluşturma]]></category>
		<category><![CDATA[kotlin classlar]]></category>
		<category><![CDATA[kotlin dersi 6]]></category>
		<category><![CDATA[kotlin şarkıcı sınıfı oluşturma]]></category>
		<category><![CDATA[kotlin sınıflar]]></category>
		<category><![CDATA[örnek]]></category>
		<guid isPermaLink="false">https://axisting.com/?p=726</guid>

					<description><![CDATA[Sınıf değişkenleri, sabitleri, fonksiyonları içinde bulunduran bir yapıdır. Kotlinde de Java&#8217;daki gibi bütün yazılan kodlar bir sınıf içinde bulunmalıdır. Classların bir çok farklı kullanımı var fakat şu an en temel şeklinde anlatmaya çalışacağım. Android Studio&#8217;da bir proje oluşturduğumuzda ilk olarak MainActivity&#8217;nin oluştuğunu görmüştük. MainActivity burada bir sınıf görevindedir. Yanında : (iki nokta ile birlikte) AppCompatActivity [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Sınıf değişkenleri, sabitleri, fonksiyonları içinde bulunduran bir yapıdır. Kotlinde de Java&#8217;daki gibi bütün yazılan kodlar bir sınıf içinde bulunmalıdır. Classların bir çok farklı kullanımı var fakat şu an en temel şeklinde anlatmaya çalışacağım. </p>



<p>Android Studio&#8217;da bir proje oluşturduğumuzda ilk olarak MainActivity&#8217;nin oluştuğunu görmüştük. MainActivity burada bir sınıf görevindedir. Yanında  : (iki nokta ile birlikte) AppCompatActivity ise başka bir class&#8217;tır. Fakat arada 2 nokta olduğu için bu class&#8217;tan miras alındığını göstermektedir. Yani AppCompatActivity&#8217;nin kullanılmaya uygun fonksiyon ve değişkenlerini bu yeni class&#8217;ta kullanabilir demektir.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class MainActivity : AppCompatActivity() { /*.....*/}</pre>



<p><strong>NOT :</strong> AppCompactActivity&#8217;i miras almasından dolayı MainActivity class olduğu gibi android dilinde artık bir Activity özelliği de taşımış olmaktadır. </p>



<h2 class="wp-block-heading">Class Oluşturma</h2>



<p>Class oluştururken android studio&#8217;da File &#8211; New- Kotlin File/Class yolunu izleyerek oluşturabiliriz. Oluştururken ismini yazmamız gerekiyor. Burası örnek yapmak adına Singer() olsun. Şarkıcıların bilgilerini içeren basit bir class yapalım. </p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class Singer {

    var name  = ""
    var age = 0
    var type = ""
}</pre>



<p>Böyle bir class oluşturduk. Şarkıcının adını yaşını ve hangi türde söylediğini  yazacağız. Fakat buraları boş bırakmadık. Şuan için buralara bir değer yazmamız gerekiyor. Ama daha sonradan tamamen sonradan tanımlı şekilde nasıl olacak onu da gösteririz. Şimdi bunu MainActivity class&#8217;ı bir nesne olarak çağırıp nesnenin değerlerini tanımlayalım.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="kotlin" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var tarkan = Singer()
        tarkan.name = "Tarkan"
        tarkan.age = 48
        tarkan.type = "Pop"

        System.out.println(tarkan.name + "/" + tarkan.age + "/" + tarkan.type)
        val sagopa = Singer()
        sagopa.name = "Sagopa Kajmer"
        sagopa.age = 40
        sagopa.type = "Rap"

        System.out.println( sagopa.name + "/" + sagopa.age + "/" + sagopa.type)



    }
}</pre>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="151" data-attachment-id="727" data-permalink="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflar-class-ders-6/attachment/logcat-classlar/" data-orig-file="https://axisting.com/wp-content/uploads/2020/11/logcat-classlar.png" data-orig-size="1311,193" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="logcat-classlar" data-image-description="" data-medium-file="https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-300x44.png" data-large-file="https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-1024x151.png" src="https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-1024x151.png" alt="" class="wp-image-727" srcset="https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-1024x151.png 1024w, https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-300x44.png 300w, https://axisting.com/wp-content/uploads/2020/11/logcat-classlar-768x113.png 768w, https://axisting.com/wp-content/uploads/2020/11/logcat-classlar.png 1311w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Göründüğü gibi bir class&#8217;ın bir den çok nesnesinin kullanımı da bu şekilde oluyor.</p>



<p>Şimdilik burada bırakalım bir sonraki derste constructor (yapıcı fonksiyon) ve class&#8217;tan parametre isteme konularına değinelim</p>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="wp-block-button"><a class="wp-block-button__link has-background has-vivid-cyan-blue-background-color" href="https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflarda-yapici-method-constructor/">Sonraki Ders</a></div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://axisting.com/bilgisayar/yazilim/android/kotlin/kotlin-ile-android-programlama-dersleri/kotlin-siniflar-class-ders-6/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">726</post-id>	</item>
	</channel>
</rss>
