{
    "id": 632,
    "date": "2018-04-11T20:55:37",
    "date_gmt": "2018-04-11T20:55:37",
    "guid": {
        "rendered": "http:\/\/hayperek.pl\/?p=632"
    },
    "modified": "2018-04-11T20:55:37",
    "modified_gmt": "2018-04-11T20:55:37",
    "slug": "widgety-cz-2",
    "status": "publish",
    "type": "post",
    "link": "https:\/\/hayperek.pl\/pl_pl\/2018\/04\/11\/widgety-cz-2\/",
    "title": {
        "rendered": "Widgety &#8211; cz. 2"
    },
    "content": {
        "rendered": "<p>Dzi\u015b mia\u0142o by\u0107 bardziej kolorowo&#8230; Ale czasami zadzia\u0142a tzw. z\u0142o\u015bliwo\u015b\u0107 rzeczy martwych i spowoduje, \u017ce pozostajemy bez sprawnego sprz\u0119tu \ud83d\ude41 Tak wi\u0119c ma\u0142a zmiana plan\u00f3w: zamiast bawi\u0107 si\u0119 w pisanie widget\u00f3w, spr\u00f3bujemy zastanowi\u0107 si\u0119 nad rozs\u0105dnym zaprojektowaniem ich struktury. Do dzie\u0142a!<\/p>\n<h5>Widget jako abstrakcja<\/h5>\n<p>S\u0142owo &#8222;widget&#8221; samo w sobie definiuje jedynie og\u00f3lnie zbi\u00f3r obiekt\u00f3w graficznych &#8211; bez konkretyzowania ich zadania czy kszta\u0142tu. M\u00f3wi\u0105c j\u0119zykiem developer\u00f3w odzwierciedla pewn\u0105 abstrakcj\u0119. C\u00f3\u017c bowiem znaczy stwierdzenie &#8222;<em>narysuj widget<\/em>&#8221; lub &#8222;<em>stw\u00f3rz widget<\/em>&#8222;, je\u015bli nie b\u0119dziemy posiada\u0107 precyzyjnej wiedzy na temat <strong>co dok\u0142adnie <\/strong> mamy narysowa\u0107 czy zbudowa\u0107. <\/p>\n<p>Z drugiej strony, niejako przypadkiem, stworzyli\u015bmy szkic interfejsu jaki ka\u017cdy widget powinien posiada\u0107: zbuduj i narysuj \ud83d\ude42 Osoby zaznajomione z Programowaniem Orientowanym Obiektowo (ang. OOP) zapewne ju\u017c wiedz\u0105 dok\u0142adnie, \u017ce widget stanowi idealnego kandydata na tzw. klas\u0119 abstrakcyjn\u0105. Temat ten chcia\u0142bym rozwin\u0105\u0107 w odr\u0119bnym artykule, w odniesieniu do j\u0119zyka C++.<\/p>\n<h5>Widget jako kontener<\/h5>\n<p>Czy widget mo\u017ce zawiera\u0107 inne widgety? Oczywi\u015bcie! Nawet nasza wst\u0119pna lista z <a href=\"http:\/\/hayperek.pl\/pl_pl\/2018\/04\/10\/widgety-cz-1\/\">poprzedniego artyku\u0142u<\/a> zawiera widget typu Box, kt\u00f3rego zadaniem jest tylko i wy\u0142\u0105cznie &#8222;grupowanie&#8221; innych kontrolek. <\/p>\n<blockquote><p>Jaki ma sens tworzenie widgetu tylko po to, aby opakowa\u0142 inne? Czy to aby nie strata czasu i pracy?<\/p><\/blockquote>\n<p>Pozornie &#8211; tak. Obeszliby\u015bmy si\u0119 r\u00f3wnie\u017c bez kontener\u00f3w. Maj\u0105 one jednak jedn\u0105, ogromn\u0105 zalet\u0119. Widgety b\u0119d\u0105ce ich sk\u0142adnikami mog\u0105 &#8222;odziedziczy\u0107&#8221; po swoim kontenerze np. kr\u00f3j czcionki czy kolorystyk\u0119. W ten spos\u00f3b zamiast mozolnie tworzy\u0107 widget od zera, mo\u017cna bazowa\u0107 na nadrz\u0119dnych parametrach, dostarczanych przez kontener.<\/p>\n<p>Na dzi\u015b starczy nam ju\u017c rozwa\u017ca\u0144, wymuszonych niejako problemami ze sprz\u0119tem. Mam nadziej\u0119, \u017ce jutro uda si\u0119 wskrzesi\u0107 urz\u0105dzenie z powrotem i pchn\u0105\u0107 temat widget\u00f3w dalej.<\/p>",
        "protected": false
    },
    "excerpt": {
        "rendered": "<p>Dzi\u015b mia\u0142o by\u0107 bardziej kolorowo&#8230; Ale czasami zadzia\u0142a tzw. z\u0142o\u015bliwo\u015b\u0107 rzeczy martwych i spowoduje, \u017ce pozostajemy bez sprawnego sprz\u0119tu \ud83d\ude41 Tak wi\u0119c ma\u0142a zmiana plan\u00f3w: zamiast bawi\u0107 si\u0119 w pisanie widget\u00f3w, spr\u00f3bujemy zastanowi\u0107 si\u0119 nad rozs\u0105dnym zaprojektowaniem ich struktury. Do dzie\u0142a! Widget jako abstrakcja S\u0142owo &#8222;widget&#8221; samo w sobie definiuje jedynie og\u00f3lnie zbi\u00f3r obiekt\u00f3w graficznych [&hellip;]<\/p>",
        "protected": false
    },
    "author": 1,
    "featured_media": 633,
    "comment_status": "closed",
    "ping_status": "open",
    "sticky": false,
    "template": "",
    "format": "standard",
    "meta": {
        "footnotes": ""
    },
    "categories": [
        3
    ],
    "tags": [],
    "class_list": {
        "0": "post-632",
        "1": "post",
        "2": "type-post",
        "3": "status-publish",
        "4": "format-standard",
        "5": "has-post-thumbnail",
        "6": "hentry",
        "7": "category-stodni",
        "9": "post-with-thumbnail",
        "10": "post-with-thumbnail-large"
    },
    "_links": {
        "self": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts\/632",
                "targetHints": {
                    "allow": [
                        "GET"
                    ]
                }
            }
        ],
        "collection": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts"
            }
        ],
        "about": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/types\/post"
            }
        ],
        "author": [
            {
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/users\/1"
            }
        ],
        "replies": [
            {
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/comments?post=632"
            }
        ],
        "version-history": [
            {
                "count": 1,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts\/632\/revisions"
            }
        ],
        "predecessor-version": [
            {
                "id": 634,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/posts\/632\/revisions\/634"
            }
        ],
        "wp:featuredmedia": [
            {
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/media\/633"
            }
        ],
        "wp:attachment": [
            {
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/media?parent=632"
            }
        ],
        "wp:term": [
            {
                "taxonomy": "category",
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/categories?post=632"
            },
            {
                "taxonomy": "post_tag",
                "embeddable": true,
                "href": "https:\/\/hayperek.pl\/pl_pl\/wp-json\/wp\/v2\/tags?post=632"
            }
        ],
        "curies": [
            {
                "name": "wp",
                "href": "https:\/\/api.w.org\/{rel}",
                "templated": true
            }
        ]
    }
}