{"id":1430,"date":"2019-10-12T12:52:21","date_gmt":"2019-10-12T12:52:21","guid":{"rendered":"https:\/\/www.yazilimperver.com\/?p=1430"},"modified":"2019-10-12T12:52:21","modified_gmt":"2019-10-12T12:52:21","slug":"solid-4-arayuz-ayristirma-prensibi","status":"publish","type":"post","link":"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/","title":{"rendered":"SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi"},"content":{"rendered":"<p>Evet dostlar, SOLID serimize devam ediyoruz. SOLID serisi ile ilgili di\u011fer yaz\u0131lar ve\u00a0ayn\u0131 zamanda SOLID prensipler genel anlamda neye hizmet ediyor ve genel motivasyon i\u00e7in de ilk yaz\u0131ya a\u015fa\u011f\u0131daki ba\u011flant\u0131lardan ba\u015fvurabilirsiniz:<\/p>\n<ol>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/05\/10\/solid-1-tek-sorumluluk-prensibi\/\">SOLID 1 \u2013 Tek Sorumluluk Prensibi<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/08\/06\/solid-2-acik-kapali-prensibi\/\">SOLID 2 \u2013 A\u00e7\u0131k\/Kapal\u0131 Prensibi<\/a><\/strong><\/span><\/li>\n<li><span style=\"color: #008000;\"><a style=\"color: #008000;\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/09\/08\/solid-3-liskovun-yerine-gecme-prensibi\/\"><strong>SOLID 3 \u2013 \u201cLiskov Substitution\u201d Prensibi<\/strong><\/a><\/span><\/li>\n<li><a href=\"https:\/\/www.yazilimperver.com\/?p=1430&amp;preview=true\"><span style=\"color: #008000;\"><strong>SOLID 4 &#8211; Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi<\/strong><\/span><\/a><\/li>\n<\/ol>\n<h2><span style=\"color: #0000ff;\"><strong><b>Aray\u00fcz Ayr\u0131\u015ft\u0131rma <\/b>\u00a0<b>Prensibi<\/b><\/strong><\/span><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/www.tomdalling.com\/images\/posts\/isp.jpg\" alt=\"Related image\" \/><\/p>\n<p>Art\u0131k son iki prensibe geldik. Bunlardan ilki aray\u00fcz ayr\u0131\u015ft\u0131rma (&#8220;interface segragation&#8221;) prensibi. Asl\u0131nda ismi size bir fikir vermi\u015ftir diye d\u00fc\u015f\u00fcn\u00fcyorum ama biz yine de bu prensibe ili\u015fkin Bob C. Martin taraf\u0131ndan yap\u0131lan tan\u0131ma bir bakal\u0131m:<\/p>\n<blockquote><p><strong>The interface-segregation principle (ISP) states that no client should be forced to depend on methods it does not use.<\/strong><\/p><\/blockquote>\n<p>Direk \u00e7evirecek olursak, ISP, herhangi bir istemci, kullanmad\u0131\u011f\u0131 bir metoda <strong>ba\u011f\u0131ml\u0131 olmamal\u0131d\u0131r<\/strong>. Bir di\u011fer ifade ile birden fazla, iyi bir \u015fekilde tan\u0131mlanm\u0131\u015f aray\u00fcz, tek ve genel bir aray\u00fczden daha iyidir. \u00d6zellikle A\u00e7\u0131k\/Kapal\u0131 Prensibinde ifade etti\u011fimiz \u00fczere, aray\u00fczler asl\u0131nda iki nesne aras\u0131nda, bir nevi kontrat\/arac\u0131 g\u00f6revi g\u00f6rmektedir. Bu sayede, kullan\u0131c\u0131 s\u0131n\u0131f, servisi ger\u00e7ekleyen s\u0131n\u0131f\u0131n bunu nas\u0131l ger\u00e7ekledi\u011fine ba\u011f\u0131ml\u0131 olmamaktad\u0131r. Sunucu, istemciye, ilgili aray\u00fczde tan\u0131mlanan davran\u0131\u015f\u0131n\u0131n sunulaca\u011f\u0131n\u0131 garanti eder.<\/p>\n<p>\u015eimdi gelelim bu prensibin \u00e7\u0131k\u0131\u015f noktas\u0131na. Diyelim bir s\u0131n\u0131f tasarlad\u0131n\u0131z ve bu s\u0131n\u0131f birden fazla istemci (ya da ba\u015fla s\u0131n\u0131flar) taraf\u0131ndan kullan\u0131lmakta. Bu istemcilerin her birinin de farkl\u0131 metotlar ve servisler kulland\u0131\u011f\u0131n\u0131 d\u00fc\u015f\u00fcnelim, burada tek bir aray\u00fcz tan\u0131mlad\u0131\u011f\u0131n\u0131z durumda, aray\u00fczde sunulan metotlar kullan\u0131lmasa da, hepsini tan\u0131mlamak zorunda kal\u0131rs\u0131n\u0131z. B\u00fct\u00fcn kullan\u0131c\u0131lar da bu aray\u00fcze ba\u011f\u0131ml\u0131 kal\u0131rlar ve kullan\u0131lmayan bu aray\u00fczlere ili\u015fkin ger\u00e7ekle\u015ftirilecek her t\u00fcrl\u00fc de\u011fi\u015fikliklerden, bu istemciler de etkilenecektir. Asl\u0131nda temelde, ilgili aray\u00fczleri kullanan istemciler, b\u00fct\u00fcn sunulan aray\u00fczlere eri\u015fmeye de ihtiya\u00e7lar\u0131 yok. Bunun yerine, Bob amcan\u0131n da ifade etti\u011fi \u00fczere, daha k\u00fc\u00e7\u00fck ve sadece ilgili istemcilerin ihtiya\u00e7 duyaca\u011f\u0131 metotlar\u0131 i\u00e7eren, rol aray\u00fczler tan\u0131mlanmal\u0131d\u0131r.<\/p>\n<p>Tabi burada akl\u0131m\u0131z hemen, karde\u015fim her bir istemci i\u00e7in ayr\u0131 ayr\u0131 aray\u00fcz m\u00fc tan\u0131mlayay\u0131m, bu sefer de aray\u00fcz \u00e7\u00f6pl\u00fc\u011f\u00fcne d\u00f6nmesin? Kesinlikle hakl\u0131s\u0131n\u0131z, burada \u00f6nemli olan, istemcileri ve ihtiya\u00e7 duyduklar\u0131 belirleyerek konsolide etmek ve benzer istemciler, ilgili aray\u00fczler sunmakt\u0131r.\u00a0Tahmin edebilece\u011finiz \u00fczere, burada s\u0131n\u0131flara ili\u015fkin sunulacak olan aray\u00fczleri do\u011fru belirlemek olduk\u00e7a \u00f6nemli. Lakin, a\u015fa\u011f\u0131da verdi\u011fim bir \u00e7ok kaynakta da ifade edildi\u011fi \u00fczere bunu yapabilmek i\u00e7in biraz alan bilgisine de ihtiya\u00e7 da var.\u00a0 Bunu yapmak i\u00e7in, olas\u0131 alandaki kullan\u0131m senaryolar\u0131 incelenebilir, olas\u0131 etkile\u015fimler ve aray\u00fczler belirlenebilir. Aray\u00fczler belirlendikten sonra da muhakkak kendimize &#8220;Bu aray\u00fczdeki b\u00fct\u00fcn metotlara ihtiyac\u0131m var m\u0131, kullan\u0131yor muyum? E\u011fer de\u011filse, bunlar\u0131 nas\u0131l daha k\u00fc\u00e7\u00fck aray\u00fczlere ay\u0131rabilirim?&#8221; sorular\u0131n\u0131 sormal\u0131y\u0131z.<\/p>\n<p>Evet s\u00f6z\u00fc daha fazla uzatmadan hemen bir \u00f6rnek \u00fczerinden (\u00d6rne\u011fin kayna\u011f\u0131 da yine Robert C. Martin&#8217;in yaz\u0131s\u0131) bu prensibi biraz daha derinlemesine inceleyelim. A\u015fa\u011f\u0131daki fig\u00fcrde, \u00fc\u00e7 kullan\u0131c\u0131s\u0131 olan bir s\u0131n\u0131f g\u00f6sterilmekte. Mevcut s\u0131n\u0131f, bu \u00fc\u00e7 istemciye de servis sunuyor, yani ilgili metotlar tan\u0131mlanm\u0131\u015f. Service s\u0131n\u0131f\u0131nda ger\u00e7ekle\u015ftirilecek k\u00fc\u00e7\u00fck bir de\u011fi\u015fiklik durumunda her \u00fc\u00e7 istemcinin de bir daha derlenerek, kullan\u0131ma sunulmas\u0131 gerekmekte.<\/p>\n<p id=\"TPqGPet\"><img loading=\"lazy\" decoding=\"async\" width=\"379\" height=\"254\" class=\"size-full wp-image-1438 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b58f018ba.png\" alt=\"\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b58f018ba.png 379w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b58f018ba-300x201.png 300w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b58f018ba-150x101.png 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b58f018ba-200x134.png 200w\" sizes=\"auto, (max-width: 379px) 100vw, 379px\" \/><\/p>\n<p>Peki bu s\u0131n\u0131f\u0131 nas\u0131l daha iyi hale getirebiliriz? Her bir istemci i\u00e7in gerekli aray\u00fczleri tan\u0131mlar ve istemcileri sadece bunlara ba\u011f\u0131ml\u0131 hale getirebiliriz. \u015e\u00f6yle ki:<\/p>\n<p id=\"sanOwco\"><img loading=\"lazy\" decoding=\"async\" width=\"546\" height=\"345\" class=\"size-full wp-image-1439 aligncenter\" src=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b5da39191.png\" alt=\"\" srcset=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b5da39191.png 546w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b5da39191-300x190.png 300w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b5da39191-500x316.png 500w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b5da39191-150x95.png 150w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b5da39191-400x253.png 400w, https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/10\/img_5da1b5da39191-200x126.png 200w\" sizes=\"auto, (max-width: 546px) 100vw, 546px\" \/><\/p>\n<p>G\u00f6r\u00fclece\u011fi \u00fczere, art\u0131k her bir istemci sadece ilgilendi\u011fi aray\u00fcz\u00fc kullanmakta ve <em>Service<\/em> s\u0131n\u0131f\u0131 da b\u00fct\u00fcn bu aray\u00fczleri ger\u00e7eklemekte. Diyelim <em>Service A<\/em> da bir de\u011fi\u015fiklik oldu bu durumda sadece <em>Client A<\/em>&#8216;n\u0131n g\u00fcncellenmesi (derlenerek, kullan\u0131ma sunulmas\u0131) yeterli olacakt\u0131r ve di\u011ferleri bu de\u011fi\u015fiklikten etkilenmeyecekler. Peki, farkl\u0131 aray\u00fczlerin ortak metotlar\u0131 kulland\u0131\u011f\u0131 durumda ne yapaca\u011f\u0131z? Bunlar i\u00e7in ayr\u0131 bir ortak aray\u00fcz m\u00fc tan\u0131mlayaca\u011f\u0131z? Bu durumda, bu metotlar\u0131 her bir aray\u00fcz i\u00e7in \u00e7oklamakta bir s\u0131k\u0131nt\u0131 yok, zaten Service s\u0131n\u0131f\u0131 bunu ger\u00e7ekleyecek ve ayn\u0131 servis her bir aray\u00fcz arac\u0131l\u0131\u011f\u0131 ile sunulacakt\u0131r. E\u011fer, aray\u00fczlere ili\u015fkin \u00e7ok ciddi g\u00fcncellemelerin yap\u0131lmas\u0131 veya eklemelerin yap\u0131lmas\u0131 durumunda, mevcut aray\u00fczleri de\u011fi\u015ftirmektense, yeni aray\u00fczlerin tan\u0131mlanmas\u0131 tercih edilebilir.<\/p>\n<p>Sonu\u00e7 olarak burada tan\u0131mlayaca\u011f\u0131m\u0131z aray\u00fczlerin olabildi\u011fince k\u00fc\u00e7\u00fck, kohezif ve sa\u011flam olmas\u0131na dikkat etmeliyiz. E\u011fer bir aray\u00fczde yap\u0131lan de\u011fi\u015fiklik, bunun ile hi\u00e7 ilgisi olmayan ba\u015fka bir aray\u00fcz\u00fc etkiliyorsa, bir yerlerde yanl\u0131\u015f yapt\u0131\u011f\u0131m\u0131z anlam\u0131na gelebilir. Bu prensibe uyulmamas\u0131 sonucu, s\u0131n\u0131flar aras\u0131nda gereksiz, ba\u011f\u0131ml\u0131l\u0131klara sebebiyet vermi\u015f olaca\u011f\u0131z ve bu da uzun vadede bizlere bak\u0131m ve idame maliyeti olarak geri d\u00f6necektir.<\/p>\n<p>Bu arada, literat\u00fcrde bu \u015fekilde bir \u00e7ok servisin tek bir aray\u00fczden sunulmas\u0131 &#8220;fat interfaces&#8221; ya da &#8220;interface pollution&#8221; gibi ibarelerle de ifade edilmekte. Bir di\u011fer ifade ile, \u00e7ok fazla davran\u0131\u015f\/metodun tek bir aray\u00fcz arac\u0131l\u0131\u011f\u0131 ile sunulmas\u0131. \u0130simleri de zaten pek \u00e7ekici de\u011fil, \u00f6yle de\u011fil mi? Bu prensibin, bu anlamda detayl\u0131 bir \u015fekilde incelenmesini ve \u00f6rneklendirilmesini <span style=\"color: #008000;\"><strong><a style=\"color: #008000;\" href=\"https:\/\/condor.depaul.edu\/dmumaugh\/OOT\/Design-Principles\/isp.pdf\">\u015fu yaz\u0131da<\/a><\/strong><\/span> g\u00f6rebilirsiniz.<\/p>\n<p>Bunun ile birlikte i\u015fin kodlama k\u0131sm\u0131na bakt\u0131\u011f\u0131n\u0131zda, bir \u00e7ok dil bu anlamda mekanizmalar sunuyor. \u00d6rne\u011fin, C++ farkl\u0131 soyut aray\u00fcz s\u0131n\u0131flar\u0131ndan s\u0131n\u0131flar\u0131n\u0131z\u0131 t\u00fcretmenize, \u00e7oklu miras mekanizmas\u0131 ile, olanak sa\u011fl\u0131yor. Tabi bu \u00e7oklu miras konusunda her zaman dikkatli olmakta fayda var. Benzer \u015fekilde C# ve Java gibi programlama dillerinde de, s\u0131n\u0131flar birden fazla aray\u00fczden t\u00fcretilebilmektedir.<\/p>\n<p>Son olarak, bu prensip ile SRP, yani tek sorumluluk prensibi asl\u0131nda \u00e7at\u0131\u015fm\u0131yor mu diye akl\u0131n\u0131za bir soru gelebilir. Sonu\u00e7ta, SRP&#8217;de g\u00f6rd\u00fc\u011f\u00fcm\u00fcz \u00fczere her bir s\u0131n\u0131f\u0131n tek bir sorumlulu\u011fu olmas\u0131 gerekti\u011fini ifade etmi\u015ftik, burada ise tek bir aray\u00fcz yerine birden fazla aray\u00fcz kullanmaktan bahsettik. Bu birden fazla aray\u00fcz, birden fazla sorumluluk anlam\u0131na gelmiyor mu? Asl\u0131nda gelmiyor, SRP yaz\u0131m\u0131zdan bir \u00f6rnek vermeye \u00e7al\u0131\u015fay\u0131m. Orada \u00f6rne\u011fin hem haberle\u015fme sorumlulu\u011fu hem de raporlama sorumlulu\u011fu tek bir s\u0131n\u0131fa y\u00fcklenmi\u015fti ve biz de bunlar\u0131 ay\u0131rm\u0131\u015ft\u0131k. Ama daha da ileri gidip, haberle\u015fme kabiliyetini, veri g\u00f6nderme ve alma olarak ay\u0131rmad\u0131k. \u00c7\u00fcnk\u00fc bu iki alt kabiliyet asl\u0131nda birbirleri ile ilintili ve bunlar\u0131 ay\u0131rmak pratik de\u011fil. Bunu yerine bunlar\u0131 ayn\u0131 s\u0131n\u0131f\u0131n iki farkl\u0131 aray\u00fcz\u00fc ile sunabiliriz. A\u015fa\u011f\u0131da bu do\u011frultuda g\u00fcncellenmi\u015f kodu g\u00f6rebilirsiniz.\u00a0Bu anlamda hem SRP hem de ISP&#8217;yi sa\u011flam\u0131\u015f oluyoruz.<\/p>\n<pre class=\"lang:c++ decode:true \">class ICommunicationSenderItem\r\n{\r\npublic:\r\n\tvirtual bool initialize() = 0;\r\n\tvirtual bool sendMessage(const char* rawData) = 0;\r\n};\r\n\r\nclass ICommunicationReceiverItem\r\n{\r\npublic:\r\n\tvirtual bool initialize() = 0;\r\n\tvirtual bool receiveMessage() = 0;\r\n};\r\n \r\n\/\/ TCP uzerinden hem dinleme hem de gonderme yapan istemci sinifi\r\nclass TCPSocketCommunication\r\n\t: public ICommunicationSenderItem,\r\n\t  public ICommunicationReceiverItem,\r\n{\r\npublic:\r\n\tvirtual bool initialize()\r\n\t{\r\n\t\t\/\/ Soket haberle\u015fmesine ili\u015fkin ilklendirmeler\r\n\t}\r\n\tvirtual bool sendMessage(const char* rawData)  override\r\n\t{\r\n\t\t\/\/ Soket uzerinden mesaj gonderme kodu\r\n\t}\r\n\tvirtual bool receiveMessage()\r\n\t{\r\n\t\t\/\/ Soket uzerinden mesaj gonderme alma kodu\t\r\n\t} \r\n\t\/\/ Sokete iliskin ozellesmis metotlar\r\n\tvoid setSocketParameters(const string ipAddress, int portNo)\r\n\t{\r\n\t\t\/\/ Soket parametreleri\r\n\t}\r\n};\r\n \r\n\/\/ Seri kanal uzerinden sadece dinleme yapmak isteyen kullanici sinifi\r\nclass SerialCommunicationListener\r\n\t: public ICommunicationReceiverItem\r\n{\r\npublic:\r\n\tvirtual bool initialize()\r\n\t{\r\n\t\t\/\/ Seri kanal uzerinden haberle\u015fmeye ili\u015fkin ilklendirmeler\r\n\t}\r\n \r\n\tvirtual bool receiveMessage()  override\r\n\t{\t\t\r\n\t\t\/\/ Seri kanal uzerinden dinleme kod\r\n\t}\r\n \r\n\t\/\/ Seri kanala iliskin ozellesmis metotlar\r\n\tvoid setSerialPortParameters(eBaudRate baudRate, eDataBit dataBits, eParity parity,)\r\n\t{\r\n\t\t\/\/ Seri kanal parametreleri\r\n\t}\r\n}<\/pre>\n<p>SRP olaya, biraz daha s\u0131n\u0131f\u0131n tasar\u0131m\u0131 noktas\u0131ndan yakla\u015f\u0131rken, ISP daha \u00e7ok, istemci g\u00f6z\u00fcnden bak\u0131yor. Bu iki prensibe ili\u015fkin di\u011fer kar\u015f\u0131la\u015ft\u0131rma sonu\u00e7lar\u0131na kaynaklar k\u0131sm\u0131ndan ula\u015fabilirsiniz.<\/p>\n<p>Sonu\u00e7 olarak, bu prensip bize, b\u00fcy\u00fck ve genel bir aray\u00fczdense, istemcilere \u00f6zel birden fazla, k\u00fc\u00e7\u00fck ve \u00f6z aray\u00fczler sunmam\u0131z\u0131 \u00f6nermekte. Ayr\u0131ca, soyutlamalar\u0131m\u0131za do\u011fru bir \u015fekilde yap\u0131p\/yapmad\u0131\u011f\u0131m\u0131za dair de bir fikir vermekte ve mevcut yaz\u0131l\u0131mlar\u0131n tasar\u0131mlar\u0131 i\u00e7in de, bu anlamda \u00f6nemli bir g\u00f6stergedir. Bu \u015fekilde geli\u015ftirmi\u015f oldu\u011fumuz yaz\u0131l\u0131mlar sayesinde, ger\u00e7ekle\u015febilecek (ki her yaz\u0131l\u0131m i\u00e7in bu ka\u00e7\u0131n\u0131lmazd\u0131r \ud83d\ude42 de\u011fi\u015fiklikler, h\u0131zl\u0131 ve daha kolay bir \u015fekilde uygulayabileceksiniz.<\/p>\n<p>Bir sonraki ve son SOLID prensibinde g\u00f6r\u00fc\u015fmek dile\u011fiyle&#8230;<\/p>\n<h2><span style=\"color: #0000ff;\">Kaynaklar:<\/span><\/h2>\n<ul>\n<li><a href=\"https:\/\/hackernoon.com\/interface-segregation-principle-bdf3f94f1d11\"><strong><span style=\"color: #008000;\">https:\/\/hackernoon.com\/interface-segregation-principle-bdf3f94f1d11<\/span><\/strong><\/a><\/li>\n<li><a href=\"https:\/\/medium.com\/@severinperez\/avoiding-interface-pollution-with-the-interface-segregation-principle-5d3859c21013\"><strong><span style=\"color: #008000;\">https:\/\/medium.com\/@severinperez\/avoiding-interface-pollution-with-the-interface-segregation-principle-5d3859c21013<\/span><\/strong><\/a><\/li>\n<li><a href=\"https:\/\/fi.ort.edu.uy\/innovaportal\/file\/2032\/1\/design_principles.pdf\"><strong><span style=\"color: #008000;\">https:\/\/fi.ort.edu.uy\/innovaportal\/file\/2032\/1\/design_principles.pdf<\/span><\/strong><\/a><\/li>\n<li><a href=\"https:\/\/condor.depaul.edu\/dmumaugh\/OOT\/Design-Principles\/isp.pdf\"><strong><span style=\"color: #008000;\">https:\/\/condor.depaul.edu\/dmumaugh\/OOT\/Design-Principles\/isp.pdf<\/span><\/strong><\/a><\/li>\n<li><a href=\"https:\/\/www.google.com\/search?q=ISP+vs+SRP&amp;rlz=1C1SQJL_trTR803TR803&amp;oq=ISP+vs+SRP&amp;aqs=chrome..69i57j0.2207j0j4&amp;sourceid=chrome&amp;ie=UTF-8\"><strong><span style=\"color: #008000;\">https:\/\/www.google.com\/search?q=ISP+vs+SRP&amp;rlz=1C1SQJL_trTR803TR803&amp;oq=ISP+vs+SRP&amp;aqs=chrome..69i57j0.2207j0j4&amp;sourceid=chrome&amp;ie=UTF-8<\/span><\/strong><\/a><\/li>\n<\/ul>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Evet dostlar, SOLID serimize devam ediyoruz. SOLID serisi ile ilgili di\u011fer yaz\u0131lar ve\u00a0ayn\u0131 zamanda SOLID prensipler genel anlamda neye hizmet ediyor ve genel motivasyon i\u00e7in de ilk yaz\u0131ya a\u015fa\u011f\u0131daki ba\u011flant\u0131lardan ba\u015fvurabilirsiniz: SOLID 1 \u2013 Tek Sorumluluk Prensibi SOLID 2 \u2013 A\u00e7\u0131k\/Kapal\u0131 Prensibi SOLID 3 \u2013 \u201cLiskov Substitution\u201d Prensibi SOLID 4 &#8211; Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi Aray\u00fcz&#8230; <a class=\"more-link\" href=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/\">Continue reading <span class=\"meta-nav\">&#8594;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":1162,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[41,188],"tags":[553,567,569,568,565,566,533,532,442,441,448,447,440,449],"class_list":["post-1430","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-modern-c","category-yazilim-muhendisligi","tag-abstraction","tag-arayuz-ayristirma-prensibi","tag-fat-interfaces","tag-interface-pollution","tag-interface-segregation-principle","tag-isp","tag-nesne-yonelimli-tasarim","tag-nesne-yonelimli-yazilim-gelistirme","tag-ood","tag-oop","tag-robert-c-martin","tag-software-design","tag-solid","tag-srp"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131<\/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:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[:tr]SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"og:description\" content=\"Evet dostlar, SOLID serimize devam ediyoruz. SOLID serisi ile ilgili di\u011fer yaz\u0131lar ve\u00a0ayn\u0131 zamanda SOLID prensipler genel anlamda neye hizmet ediyor ve genel motivasyon i\u00e7in de ilk yaz\u0131ya a\u015fa\u011f\u0131daki ba\u011flant\u0131lardan ba\u015fvurabilirsiniz: SOLID 1 \u2013 Tek Sorumluluk Prensibi SOLID 2 \u2013 A\u00e7\u0131k\/Kapal\u0131 Prensibi SOLID 3 \u2013 \u201cLiskov Substitution\u201d Prensibi SOLID 4 &#8211; Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi Aray\u00fcz... Continue reading &#8594;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/\" \/>\n<meta property=\"og:site_name\" content=\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-12T12:52:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/05\/img_5cd5e44cbe99e.png\" \/>\n\t<meta property=\"og:image:width\" content=\"182\" \/>\n\t<meta property=\"og:image:height\" content=\"84\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"yaz\u0131l\u0131mperver\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"yaz\u0131l\u0131mperver\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/\"},\"author\":{\"name\":\"yaz\u0131l\u0131mperver\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"headline\":\"SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi\",\"datePublished\":\"2019-10-12T12:52:21+00:00\",\"dateModified\":\"2019-10-12T12:52:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/\"},\"wordCount\":1445,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"keywords\":[\"abstraction\",\"Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi\",\"Fat Interfaces\",\"Interface Pollution\",\"Interface Segregation Principle\",\"ISP\",\"Nesne Y\u00f6nelimli Tasar\u0131m\",\"Nesne Y\u00f6nelimli Yaz\u0131l\u0131m Geli\u015ftirme\",\"OOD\",\"OOP\",\"Robert C. Martin\",\"software design\",\"SOLID\",\"SRP\"],\"articleSection\":[\"Modern C++\",\"Yaz\u0131l\u0131m M\u00fchendisli\u011fi\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/\",\"url\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/\",\"name\":\"[:tr]SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#website\"},\"datePublished\":\"2019-10-12T12:52:21+00:00\",\"dateModified\":\"2019-10-12T12:52:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Ana sayfa\",\"item\":\"https:\/\/www.yazilimperver.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.yazilimperver.com\/#website\",\"url\":\"https:\/\/www.yazilimperver.com\/\",\"name\":\"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131\",\"description\":\"Payla\u015fmak g\u00fczeldir.\",\"publisher\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.yazilimperver.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb\",\"name\":\"yaz\u0131l\u0131mperver\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"contentUrl\":\"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png\",\"caption\":\"yaz\u0131l\u0131mperver\"},\"logo\":{\"@id\":\"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[:tr]SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","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:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/","og_locale":"tr_TR","og_type":"article","og_title":"[:tr]SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","og_description":"Evet dostlar, SOLID serimize devam ediyoruz. SOLID serisi ile ilgili di\u011fer yaz\u0131lar ve\u00a0ayn\u0131 zamanda SOLID prensipler genel anlamda neye hizmet ediyor ve genel motivasyon i\u00e7in de ilk yaz\u0131ya a\u015fa\u011f\u0131daki ba\u011flant\u0131lardan ba\u015fvurabilirsiniz: SOLID 1 \u2013 Tek Sorumluluk Prensibi SOLID 2 \u2013 A\u00e7\u0131k\/Kapal\u0131 Prensibi SOLID 3 \u2013 \u201cLiskov Substitution\u201d Prensibi SOLID 4 &#8211; Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi Aray\u00fcz... Continue reading &#8594;","og_url":"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/","og_site_name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","article_published_time":"2019-10-12T12:52:21+00:00","og_image":[{"width":182,"height":84,"url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2019\/05\/img_5cd5e44cbe99e.png","type":"image\/png"}],"author":"yaz\u0131l\u0131mperver","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"yaz\u0131l\u0131mperver","Tahmini okuma s\u00fcresi":"8 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/#article","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/"},"author":{"name":"yaz\u0131l\u0131mperver","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"headline":"SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi","datePublished":"2019-10-12T12:52:21+00:00","dateModified":"2019-10-12T12:52:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/"},"wordCount":1445,"commentCount":0,"publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"keywords":["abstraction","Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi","Fat Interfaces","Interface Pollution","Interface Segregation Principle","ISP","Nesne Y\u00f6nelimli Tasar\u0131m","Nesne Y\u00f6nelimli Yaz\u0131l\u0131m Geli\u015ftirme","OOD","OOP","Robert C. Martin","software design","SOLID","SRP"],"articleSection":["Modern C++","Yaz\u0131l\u0131m M\u00fchendisli\u011fi"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/","url":"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/","name":"[:tr]SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi[:] - Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/www.yazilimperver.com\/#website"},"datePublished":"2019-10-12T12:52:21+00:00","dateModified":"2019-10-12T12:52:21+00:00","breadcrumb":{"@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.yazilimperver.com\/index.php\/2019\/10\/12\/solid-4-arayuz-ayristirma-prensibi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ana sayfa","item":"https:\/\/www.yazilimperver.com\/"},{"@type":"ListItem","position":2,"name":"SOLID 4 \u2013 Aray\u00fcz Ayr\u0131\u015ft\u0131rma Prensibi"}]},{"@type":"WebSite","@id":"https:\/\/www.yazilimperver.com\/#website","url":"https:\/\/www.yazilimperver.com\/","name":"Yaz\u0131l\u0131mperver&#039;in D\u00fcnyas\u0131","description":"Payla\u015fmak g\u00fczeldir.","publisher":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.yazilimperver.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/6497f6de4df6ba469748b861a2b3fcdb","name":"yaz\u0131l\u0131mperver","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/","url":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","contentUrl":"https:\/\/www.yazilimperver.com\/wp-content\/uploads\/2018\/04\/OnlyIcon-1-114x114.png","caption":"yaz\u0131l\u0131mperver"},"logo":{"@id":"https:\/\/www.yazilimperver.com\/#\/schema\/person\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1430","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/comments?post=1430"}],"version-history":[{"count":7,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1430\/revisions"}],"predecessor-version":[{"id":1444,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/posts\/1430\/revisions\/1444"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media\/1162"}],"wp:attachment":[{"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/media?parent=1430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/categories?post=1430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimperver.com\/index.php\/wp-json\/wp\/v2\/tags?post=1430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}