{"id":238,"date":"2015-06-10T00:00:42","date_gmt":"2015-06-09T21:00:42","guid":{"rendered":"https:\/\/gokhan-gokalp.com\/?p=238"},"modified":"2015-06-10T00:00:42","modified_gmt":"2015-06-09T21:00:42","slug":"liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi","status":"publish","type":"post","link":"https:\/\/gokhan-gokalp.com\/tr\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/","title":{"rendered":"Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi"},"content":{"rendered":"<p><a href=\"https:\/\/gokhan-gokalp.com\/open-closed-principle-ocp-acik-kapali-prensibi\/\">Open Closed<\/a>\u00a0prensibinden\u00a0sonra vermi\u015f oldu\u011fum\u00a0uzun bir aran\u0131n\u00a0ar\u0131ndan\u00a0s\u0131radaki\u00a0prensibimiz olan Liskov&#8217;un yerine ge\u00e7me prensibi (Liskov Substitution Principle) \u00a0ile makalemize devam edelim. :)<\/p>\n<p>\u00d6nemli prensipler aras\u0131nda olan LSP \u00f6z\u00fcnde bize gelece\u011fe d\u00f6n\u00fck olarak nas\u0131l hamleler ile kod geli\u015ftiriliri\u00a0veriyor. \u00d6nce bu\u00a0c\u00fcmleye bulmu\u015f oldu\u011fum g\u00fczel bir resim ile giri\u015f yapal\u0131m. :)<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/06\/liskov.jpg\"><img decoding=\"async\" class=\"aligncenter  wp-image-239 lazyload\" data-src=\"\/wp-content\/uploads\/2015\/06\/liskov.jpg\" alt=\"liskov\" width=\"470\" height=\"376\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2015\/06\/liskov.jpg 640w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2015\/06\/liskov-300x240.jpg 300w\" data-sizes=\"(max-width: 470px) 100vw, 470px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 470px; --smush-placeholder-aspect-ratio: 470\/376;\" \/><\/a><\/p>\n<blockquote><p>E\u011fer bir \u00f6rdek ise, \u00f6rdek gibi ses \u00e7\u0131kart\u0131r(Quicklemek her nas\u0131l yaz\u0131l\u0131yorsa sesi :)) ama bir pile\u00a0ihtiyac\u0131 vard\u0131r. Buda demek oluyor ki bir yerlerde yanl\u0131\u015f abstraction\u00a0ger\u00e7ekle\u015ftirmi\u015fiz.<\/p><\/blockquote>\n<p>LSP prensibi <a href=\"https:\/\/gokhan-gokalp.com\/open-closed-principle-ocp-acik-kapali-prensibi\/\">Open Closed<\/a> prensibinin \u00f6zel bir t\u00fcr\u00fcd\u00fcr desek yanl\u0131\u015f olmaz. OCP\u2019de de oldu\u011fu gibi LSP de de geni\u015flemeye a\u00e7\u0131k yap\u0131lar s\u00f6z konusudur. Her ne kadar anla\u015f\u0131lmas\u0131 biraz zor olsa da LSP ilk bak\u0131\u015fta, alt\u0131nda yatan ana fikri: <em><strong>alt s\u0131n\u0131flardan olu\u015fan nesnelerin \u00fcst s\u0131n\u0131f\u0131n nesneleri ile yer de\u011fi\u015ftirdikleri zaman, ayn\u0131 davran\u0131\u015f\u0131 sergilemesini beklemektir<\/strong><\/em>.<\/p>\n<p>Basit bir \u00f6rnek ile hemen inceleyelim:<\/p>\n<p>\u00d6rne\u011fimizde soyut(abstract) olarak bir <strong>Car<\/strong> s\u0131n\u0131f\u0131n\u0131\u00a0tan\u0131ml\u0131yoruz ve i\u00e7erisine <strong>Run<\/strong> ve <strong>OpenAirConditioning<\/strong> metotlar\u0131n\u0131 ekliyoruz.<\/p>\n<pre class=\"lang:c# decode:true \">namespace LiskovSubstitutionPrinciple\r\n{\r\n    public abstract class Car\r\n    {\r\n        public string Run()\r\n        {\r\n            return \"Araba \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131.\";\r\n        }\r\n\r\n        public abstract string OpenAirConditioning();\r\n    }\r\n}\r\n<\/pre>\n<p>Kal\u0131t\u0131m alnacak <strong>Run<\/strong> metotu ile araba \u00e7al\u0131\u015ft\u0131r\u0131lacak, soyut(abstract) olarak tan\u0131mlanm\u0131\u015f <strong>OpenAirConditioning<\/strong> metotu ilede kal\u0131t\u0131m alan t\u00fcre g\u00f6re klima a\u00e7\u0131lacak.<\/p>\n<p>Ard\u0131ndan <strong>Ferrari<\/strong> ile <strong>Murat131<\/strong>\u00a0somut s\u0131n\u0131flar\u0131n\u0131 (concreate)\u00a0<strong>Car\u00a0<\/strong>soyut s\u0131n\u0131f\u0131ndan\u00a0kal\u0131t\u0131m yoluyla olu\u015fturuyoruz.\u00a0Burada dikkatin \u00e7ekilmesi gereken nokta: <strong>Murat131<\/strong>\u2019in klima \u00f6zelli\u011finin olmamas\u0131ndan dolay\u0131 ve soyut(abstract) olarak tan\u0131mlanm\u0131\u015f metotu override\u00a0etmek\u00a0zorunda oldu\u011fumuz i\u00e7in ya <strong>NotImplementedException<\/strong>\u00a0hatas\u0131 f\u0131rlat\u0131lacak yada null ge\u00e7erek hatan\u0131n \u00fczerini \u00f6rtm\u00fc\u015f olaca\u011f\u0131z.<\/p>\n<pre class=\"lang:c# decode:true \">    public class Ferrari : Car\r\n    {\r\n        public override string OpenAirConditioning()\r\n        {\r\n            return \"Klima a\u00e7\u0131ld\u0131.\";\r\n        }\r\n    }\r\n\r\n    public class Murat131 : Car\r\n    {\r\n        public override string OpenAirConditioning()\r\n        {\r\n            throw new NotImplementedException();\r\n\r\n            \/\/return null;\r\n        }\r\n    }<\/pre>\n<p>Buraya kadar her \u015fey g\u00fczel. Murat131&#8217;in klimas\u0131 olsun olmas\u0131n ben null ge\u00e7tim ve hataya engel oldum diye d\u00fc\u015f\u00fcn\u00fcyoruz. Ne olabilir ki? Evet \u00e7ok \u015fey olabilir! E\u011fer b\u00fcy\u00fck bir proje ekibi ile ayn\u0131 proje \u00fczerinde \u00e7al\u0131\u015f\u0131yorsak ve g\u00fcnlerden bir g\u00fcn bir kodu ba\u015fka bir yaz\u0131l\u0131mc\u0131 ihtiya\u00e7 duyuyorsa ve \u015f\u00f6yle bir \u015feyler kodlamaya ba\u015flarsa:<\/p>\n<pre class=\"lang:c# decode:true \">        static void Main(string[] args)\r\n        {\r\n            Car car = new Ferrari();\r\n\r\n            car.Run();\r\n            car.OpenAirConditioning();\r\n            \/\/ S\u0131k\u0131nt\u0131 yok her \u015fey yolunda.\r\n\r\n            car = new Murat131();\r\n\r\n            car.Run();\r\n            car.OpenAirConditioning(); \/\/ ?\r\n        }<\/pre>\n<p>Ferrari i\u00e7in her \u015fey g\u00fcll\u00fck g\u00fclistanl\u0131k olurken ayn\u0131 davran\u0131\u015f Murat131 i\u00e7in olmayacakt\u0131r ve o ekip arkada\u015f\u0131n\u0131zdan hi\u00e7 de ho\u015f olmayan laflar duyabilirsiniz helede bir test ekibiniz yoksa ve \u00fcr\u00fcn\u00fcn\u00fcz\u00fc <strong>production<\/strong> ortam\u0131na \u00e7\u0131kart\u0131yorsan\u0131z vay halinize&#8230;<\/p>\n<p>LSP&#8217;ye giri\u015fteki ilk s\u00f6z\u00fc hemen hat\u0131rlayal\u0131m tekrar:\u00a0<em><strong>alt s\u0131n\u0131flardan olu\u015fan nesnelerin \u00fcst s\u0131n\u0131f\u0131n nesneleri ile yer de\u011fi\u015ftirdikleri zaman, ayn\u0131 davran\u0131\u015f\u0131 sergilemesini beklemektir<\/strong><\/em>.<\/p>\n<p>Bu durumda Murat131 ayn\u0131 davran\u0131\u015f\u0131 sergilememesinden dolay\u0131 LSP\u2019ye <strong>uymad\u0131\u011f\u0131n\u0131<\/strong> s\u00f6yleyebiliriz. Ayr\u0131ca, <strong>OpenAirConditioning<\/strong> \u00f6zelli\u011fini temel\u00a0s\u0131n\u0131f\u0131m\u0131z\u00a0olan <strong>Car<\/strong>\u00a0s\u0131n\u0131f\u0131ndan\u00a0bir <strong>Interface(aray\u00fcz)<\/strong> arac\u0131l\u0131\u011f\u0131 ile ay\u0131rabilir ve ilgili somut s\u0131n\u0131fa (concreate class)\u00a0<strong>implemente<\/strong> ederek bu problemin\u00a0\u00f6n\u00fcne ge\u00e7mi\u015f olabiliriz. Hat\u0131rlayal\u0131m: interface&#8217;de genelde can-do ili\u015fkisi vard\u0131, bir edinim kazand\u0131rma.<\/p>\n<p>Hemen klima i\u00e7in olan <strong>IAirConditionable<\/strong>\u00a0aray\u00fcz\u00fcn\u00fc(interface) olu\u015ftural\u0131m ve ilgili s\u0131n\u0131fa implemente edelim.<\/p>\n<h4 class=\"\">Not: <em>interface&#8217;ler genelde ba\u015flar\u0131nda I tak\u0131s\u0131 ve sonunda -able tak\u0131s\u0131 almaktad\u0131r. -ebilen gibi bir edinim kazand\u0131rma durumlar\u0131nda.<\/em><\/h4>\n<pre class=\"lang:c# decode:true \">using System;\r\n\r\nnamespace LiskovSubstitutionPrinciple\r\n{\r\n    public interface IAirConditionable\r\n    {\r\n        string OpenAirConditioning();\r\n    }\r\n\r\n    public abstract class Car\r\n    {\r\n        public string Run()\r\n        {\r\n            return \"Araba \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131.\";\r\n        }\r\n    }\r\n\r\n    public class Ferrari : Car, IAirConditionable\r\n    {\r\n        public string OpenAirConditioning()\r\n        {\r\n            return \"Klima a\u00e7\u0131ld\u0131.\";\r\n        }\r\n    }\r\n\r\n    public class Murat131 : Car\r\n    {\r\n    }\r\n\r\n}\r\n<\/pre>\n<p>Klima\u00a0\u00f6zelli\u011fini sadece Ferrari i\u00e7in implemente etti\u011fimizden dolay\u0131, hi\u00e7 kimse Murat131 i\u00e7in <strong>OpenAirConditioning<\/strong> metotuna eri\u015femiyecek\u00a0ve\u00a0herhangi bir problem ile kar\u0131la\u015f\u0131lmayacakt\u0131r.<\/p>\n<p>Ba\u015fka makalelerde g\u00f6r\u00fc\u015fmek dile\u011fiyle.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Open Closed\u00a0prensibinden\u00a0sonra vermi\u015f oldu\u011fum\u00a0uzun bir aran\u0131n\u00a0ar\u0131ndan\u00a0s\u0131radaki\u00a0prensibimiz olan Liskov&#8217;un yerine ge\u00e7me prensibi (Liskov Substitution Principle) \u00a0ile makalemize devam edelim. :) \u00d6nemli prensipler aras\u0131nda olan LSP \u00f6z\u00fcnde bize gelece\u011fe d\u00f6n\u00fck olarak nas\u0131l hamleler ile kod geli\u015ftiriliri\u00a0veriyor. \u00d6nce bu\u00a0c\u00fcmleye bulmu\u015f oldu\u011fum g\u00fczel bir resim ile giri\u015f yapal\u0131m. :)&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/gokhan-gokalp.com\/tr\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/\">Devam\u0131n\u0131 okuyun<span class=\"screen-reader-text\">Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[21],"tags":[51,50,28,15,29,49],"class_list":["post-238","post","type-post","status-publish","format-standard","hentry","category-tasarim-prensipleri-design-principles","tag-liskov-substitution-prensibi","tag-liskov-substitution-principle","tag-object-oriented-prensipleri","tag-oop","tag-solid","tag-tasarim-prensipleri","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"tr","enabled_languages":["en","tr"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"tr":{"title":false,"content":false,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi - G\u00f6khan G\u00f6kalp<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi - G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/\" \/>\n<meta property=\"og:site_name\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"article:published_time\" content=\"2015-06-09T21:00:42+00:00\" \/>\n<meta name=\"author\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\\\/\"},\"author\":{\"name\":\"G\u00f6khan G\u00f6kalp\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"headline\":\"Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi\",\"datePublished\":\"2015-06-09T21:00:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\\\/\"},\"wordCount\":617,\"commentCount\":14,\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"keywords\":[\"liskov substitution prensibi\",\"liskov substitution principle\",\"object oriented prensipleri\",\"OOP\",\"Solid\",\"Tasar\u0131m prensipleri\"],\"articleSection\":[\"Tasar\u0131m Prensipleri (Design Principles)\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\\\/\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\\\/\",\"name\":\"Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi - G\u00f6khan G\u00f6kalp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\"},\"datePublished\":\"2015-06-09T21:00:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"description\":\"C# &amp; Python lover\",\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gokhan-gokalp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"caption\":\"G\u00f6khan G\u00f6kalp\"},\"logo\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\"},\"sameAs\":[\"https:\\\/\\\/gokhan-gokalp.com\"],\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/tr\\\/author\\\/gok-gokalp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi - G\u00f6khan G\u00f6kalp","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/","og_locale":"tr_TR","og_type":"article","og_title":"Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi - G\u00f6khan G\u00f6kalp","og_url":"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/","og_site_name":"G\u00f6khan G\u00f6kalp","article_published_time":"2015-06-09T21:00:42+00:00","author":"G\u00f6khan G\u00f6kalp","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"G\u00f6khan G\u00f6kalp","Tahmini okuma s\u00fcresi":"4 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/#article","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/"},"author":{"name":"G\u00f6khan G\u00f6kalp","@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"headline":"Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi","datePublished":"2015-06-09T21:00:42+00:00","mainEntityOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/"},"wordCount":617,"commentCount":14,"publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"keywords":["liskov substitution prensibi","liskov substitution principle","object oriented prensipleri","OOP","Solid","Tasar\u0131m prensipleri"],"articleSection":["Tasar\u0131m Prensipleri (Design Principles)"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/","url":"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/","name":"Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi - G\u00f6khan G\u00f6kalp","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/#website"},"datePublished":"2015-06-09T21:00:42+00:00","breadcrumb":{"@id":"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gokhan-gokalp.com\/liskov-substitution-principle-lsp-liskovun-yerine-gecme-prensibi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gokhan-gokalp.com\/"},{"@type":"ListItem","position":2,"name":"Liskov Substitution Principle (LSP) \u2013 Liskov\u2019un Yerine Ge\u00e7me Prensibi"}]},{"@type":"WebSite","@id":"https:\/\/gokhan-gokalp.com\/#website","url":"https:\/\/gokhan-gokalp.com\/","name":"G\u00f6khan G\u00f6kalp","description":"C# &amp; Python lover","publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gokhan-gokalp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe","name":"G\u00f6khan G\u00f6kalp","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","url":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","caption":"G\u00f6khan G\u00f6kalp"},"logo":{"@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659"},"sameAs":["https:\/\/gokhan-gokalp.com"],"url":"https:\/\/gokhan-gokalp.com\/tr\/author\/gok-gokalp\/"}]}},"_links":{"self":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/comments?post=238"}],"version-history":[{"count":4,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/238\/revisions"}],"predecessor-version":[{"id":243,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/238\/revisions\/243"}],"wp:attachment":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media?parent=238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/categories?post=238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/tags?post=238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}