Yapay zekadan makale özeti
- Kısa
- Ayrıntılı
- Bu video, bir eğitmen tarafından sunulan nesne tabanlı programlama dersidir. Eğitmen, abstraction (soyutlama) kavramını detaylı bir şekilde anlatmaktadır.
- Videoda abstraction kavramı, bir programlama dilinin veya object oriented felsefesinin özelliği olmadığını, sadece bir davranış ve mantık olduğunu vurgulayarak başlıyor. Eğitmen, abstraction'ın gerçek hayattan programlamaya genellediği bir davranış olduğunu günlük hayattan örneklerle açıklıyor ve UserService sınıfı üzerinden pratik uygulamalar sunuyor. Ayrıca, abstraction'ın interface ve abstract class'larla nasıl uygulanabileceği de anlatılıyor.
- Video, abstraction'ın ana hedefinin bir nesnenin yalnızca o anki duruma göre ilgili davranışları gösterilmekte, gereksiz ayrıntıları gizlenmesi olduğunu vurguluyor. Eğitmen, abstraction'ın teknik boyutunun kolay olduğunu belirterek, niyetin anlaşılmasının önemini vurguluyor ve bir sonraki derste interface konusunun detaylı olarak ele alınacağını belirtiyor.
- 00:01Nesne Tabanlı Programlama ve Soyutlama
- Bu derste nesne tabanlı programlama yaklaşımında gerçek hayattan programlamaya genellediğimiz soyutlama ( abstraction) davranışı incelenecektir.
- Soyutlama herhangi bir programlama dilinin veya nesne tabanlı felsefesinin bir özelliği değil, sadece genellikle nesne tabanlı çalışmalarda kullanılan ve işi kolaylaştıran bir davranıştır.
- Nesne tabanlı programlamada interface ve abstract class gibi özelliklerin daha net anlaşılabilmesi için öncelikle soyutlama kavramını anlamak gerekmektedir.
- 02:09Soyutlama Kavramının Tanımlanması
- Soyutlama bir özellik veya programlama dilinin parçası değil, bir mantık ve davranıştır.
- Soyutlama kavramını anlamak için basit tanımlardan ziyade örnek bir kod üzerinden anlatılacaktır.
- Örnek olarak kullanıcı işlemlerinden sorumlu olan "UserService" sınıfı kullanılarak soyutlama kavramı açıklanacaktır.
- 03:51Soyutlama Örneği
- Kullanıcı doğrulaması yapmak için UserService sınıfından instance üretilip "validateUser" metodu kullanılır.
- Doğrulama işlemi sırasında sınıfın içindeki diğer kullanıcı işlemlerine dair metotlar ve propertiler de görünür hale gelir, bu durum geliştirici açısından doğru değildir.
- Gerçek hayatta bir işlemi yaparken sadece o işe odaklı alet edevat kullanmak gibi, yazılım geliştirme ortamında da sadece yazılım yapmaya yönelik ürünlerin bulunması ve diğerlerinin soyutlanması soyutlama kavramıdır.
- 06:31Soyutlama'nın Önemi
- Yazılımsal açıdan, bir işleme odaklı çalışma sergilerken o çalışmayı gerçekleştireceğimiz instance içerisinde o çalışmanın dışındaki memberların gelmesi geliştirici açısından doğru değildir.
- Geliştirici yanlışlıkla farklı bir memuru, fonksiyonu veya propertiyi tetikleyebilir ve farklı işlemler yapabilir.
- Bir çalışma yapacak olan developer için o andaki işleme odaklı fonksiyonu yüzlerce memberun içerisinden arayıp buldurmak ekstra bir maliyet demektir.
- 08:28Soyutlama'nın Amacı
- Kullanıcı doğrulama işlemi yapacağı bir operasyon sürecinde sadece doğrulama ile ilgili memberlara erişmesi ideal bir durumdur.
- Bir nesnenin herhangi bir operasyon anında o operasyona uygun olmayan memurlarını o noktada soyutlamak soyutlama davranışıdır.
- Soyutlama davranışının teknik boyutunun ne kadar kolay olduğunu bu derste anlayacağız.
- 10:09Abstraction Kavramı
- Tesisatçı gibi bir kişi, iş yaparken sadece o anda ihtiyacı olan aletleri kullanarak diğer aletleri gözünün önünden kaldırması işini kolaylaştırır.
- Yazılımcılar için de aynı mantık geçerlidir; o anda ihtiyaç dışı memberların arasından yapılacak işe odaklı memberları ayırt etmek sıkıntılı bir durumdur.
- Abstraction, bir işi yaparken o işle alakalı olan memberlara, alete, edevata erişmek ve o işte hiçbir alakası olmayan memberların, aletlerin, edevatların o andan soyutlanmasını sağlamak demektir.
- 13:28Abstraction'ın Önemi
- Kodu daha idealize olması için gösterilen davranışlara ve tutumlara abstraction denir.
- Abstraction ile ilgili genelleme: gerekli olanları göster, gereksiz olanları gösterme.
- Kavramsal olarak, bir sınıfın memberlarından ihtiyaç noktasında alakalı olanları gösterip alakasız olmayanları göstermemek bu davranışı sergilemek demektir.
- 15:04Abstraction'ın Uygulanması
- Abstraction davranışının interface yahut abstract class'larla doğrudan hiçbir alakasının ve ilgisinin olmadığını bilmek önemlidir.
- Abstraction bir davranıştır ve bu davranışı sergileyebileceğiniz her türlü yol, yordam, manevra, yöntem zaten abstraction'ın kendisidir.
- Abstraction'ı her türlü uygulayabilirsiniz, ancak en ideal ve rahat uygulayabileceğin yapılar object orantıda interface ve abstract class'lardır.
- 18:41Abstraction Uygulaması İçin Gerekli Referans
- Bir operasyon anında kullanılacak sınıfın sadece o anki operasyona uygun memberlarını getirtebilmek için ilgili memberları temsil edebilecek bir referansa ihtiyaç vardır.
- Bu davranışı uygularken sadece interfaceler yahut abstract class'lar diğer yapılara göre daha elverişli olabilmektedir.
- 19:38Polimorfizm ve Astraction
- Bir nesnenin memberlarını temsil etmek için referans kullanılır ve bu referans aracılığıyla sadece o memberlara erişilebilir.
- Polimorfizmde bir nesne birden fazla referansla temsil edilebilir ve her referans kendi içerisindeki memberlara karşılık ilgili nesnedeki memberleri tetikleyebilir.
- Astraction davranışını göstermek için polimorfizm kullanılabilir.
- 20:38Interface ve Abstract Class'ların Önemi
- Normal sınıflarda çok biçimlilik uygulanabilir ancak bir sınıf sadece tek bir klastan kalıtım alabilir.
- Interface ve abstract class'lar, astraction davranışını diğer yapılara göre daha elverişli bir şekilde uygulamak için kullanılır.
- Bir sınıf birden fazla interface'in referansını alabilir, bu da ilgili sınıfın birden fazla referansla refere edilebilmesi anlamına gelir.
- 23:25Interface Kavramı
- Interface, bir class'ı tanımlarken "class" yerine "interface" yazıp ardından adını belirleyerek tanımlanır.
- Interface içerisinde bir sözleşme yapılır ve bu interface'i kullanacak olan sınıflarda hangi memberların olmasını istiyorsak sadece onların imzalarını barındırırız.
- Interface, sınıfın içerisindeki memberların imzalarını işlevsel olarak bir gruplamaya tabi tutar.
- 25:42Interface'lerin Kullanımı
- Bir sınıfın interface'leri kullanabilmesi için aynen kalıtım gibi bir davranış sergilemesi gerekir.
- Bir sınıf birden fazla interface kullanarak implementasyon davranışı sergileyebilir.
- Interface'ler tür görevi görür ve bir interface türünden referans oluşturulduğunda, o referansın içerisindeki memberlara erişilebilir.
- 29:22Astraction ve Polimorfizm İlişkisi
- Astraction davranışı memberları ayıkladığı için, bir operasyonla alakalı olmayan memberları o anda getirmediği için kalımsal bir davranış gerektirir.
- Astraction davranışını sergilerken farklı referanslar kullanıldığı için polimorfizm kavramlarıyla doğrudan bağlantılı bir davranıştır.
- Astraction, memberları gizlediği için kalımsal bir davranış gerektirir ve farklı referanslar kullanıldığı için polimorfizm kavramlarıyla doğrudan bağlantılıdır.
- 30:26Abstraction Kavramı ve Etkisi
- Abstraction, ilgili nesnenin işlevi nasıl yaptığından öte ne yaptığı ile ilgilendiğimizi ifade eder.
- Abstraction davranışını sergileyebilmek için o anki davranışa karşılık kullanacağımız memberı temsil edecek bir referans oluşturmamız gerekir.
- En ideal davranış interface yapılanmasıdır, bu sayede sadece belirli bir davranışa erişim sağlayabiliriz.
- 31:36Abstraction Örneği
- UserService sınıfında doğrulama işlemi için instance oluşturup gerekli metodu kullanarak çalışırız, ancak bu durumda abstraction tutumu sergilemiyoruz.
- UserValidateService interface'i oluşturarak UserService'i bu interface'e referans edebiliriz.
- Bu şekilde sadece ValidetUser imzasına karşılık gelen membera erişim gösterebilir, diğer memberlara erişim engellenir.
- 34:39Abstraction'ın Etkisi
- Abstraction, nesnenin işleri nasıl yaptığını değil, hangi görevleri yapabileceğini söylememizi sağlar.
- Bir sınıf bir interface'e implementasyon ettiğinde, o interface'in içerisindeki memberları kendi içerisinde tanımlamak zorundadır.
- Abstraction, bir sınıfın belirli bir davranışa sahip olduğunun garantisini sağlamaktadır.
- 39:40Abstraction'ın Ana Hedefi
- Abstraction'ın ana hedefi, bir nesnenin yalnızca o anki duruma göre ilgili davranışları gösterilmekte, gereksiz ayrıntıları gizlenmektedir.
- Geliştiriciden bir sınıfa karşın olabilecek gereksiz ayrıntıları gizleyerek karmaşıklığın üstesinden gelmektir.
- Yerine göre uygulama ayrıntılarını gizleyerek sadece ilgili davranışların erişilebilir olmasını sağlamaktadır.
- 40:32Abstraction Kavramı
- Abstraction, uygulama sürecinde ilgili memberlara erişip alakasız memberları elemek, ilgili instansın ne yapabileceğini gösterip nasıl yaptığını developerdan soyutlamak ve ayrıntıları gizleyerek sadece ilgili davranışların erişilebilir olmasını sağlamak anlamına gelir.
- Abstraction hayatın içinden programlamaya genellenmiş bir davranıştır.
- 41:27Abstraction Örnekleri
- Amazon hesabına giriş sürecinde sadece kullanıcı adı ve şifre alacak metoduna erişebilmek, diğer alakasız metotlara erişmemek bir abstraction davranışının neticesidir.
- Yazılımsal süreçlerde nesnelerin belirli referanslarla işaretlenip çalışmalara devam edilmesi de abstraction'ın bir neticesidir.
- Araba örneğinde, şoför için araba sadece bir arabadır ve arabanın motorunda dönen fiziksel kurallar soyutlanmıştır.
- Priz örneğinde, priz sadece kendisine takılacak fişi bilir ve elektrik göndereceği cihazın detayları fiş sayesinde soyutlanmıştır.
- Kahve makinesi örneğinde, kahve yapma sürecinde uygulayabileceğiniz davranışlar gereksiz detaylardan soyutlanmıştır.
- 45:10Abstraction'un Önemi
- Hayatın her noktasında teknolojik altyapıda lüzumsuz, gereksiz angarya işten sizleri soyutlayabilmek için gelişim göstermektedir.
- Abstraction hayatın içinden bir davranıştır ve object oriented programlama felsefesinin içerisinde varlığını gösteren bir davranıştır.