• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy nadaje się do programowania?

Object Storage Arubacloud
0 głosów
582 wizyt
pytanie zadane 2 listopada 2017 w PHP przez Krzysio4224 Obywatel (1,690 p.)
Część

Mam problem z którym nie mogę sobie poradzić, od niedawna uczę się PHP i PHP obiektowego, problem polega na tym że PHP szybko załapałem ale gorzej jest z obiektowym PHP, robiłem dużo kursów  i czytałem o tym ale nic nie rozumiem, co mam zrobić, może zmienić na inny język?, Miał ktoś z was podobny problem ?

1 odpowiedź

+3 głosów
odpowiedź 2 listopada 2017 przez CenterPL Pasjonat (19,070 p.)
wybrane 2 listopada 2017 przez Krzysio4224
 
Najlepsza
Moja rada jest taka, żebyś odpoczął sobie z tydzień, może dwa i siadł do tematu jeszcze raz. Programowanie obiektowe jest praktycznie takie samo w każdym języku, a więc jego zmiana niespecjalnie Ci pomoże.

A czego konkretnie nie rozumiesz? Może my pomożemy?
komentarz 2 listopada 2017 przez Krzysio4224 Obywatel (1,690 p.)
Nie mogę zrozumieć klas abstrakcyjnych, ogólnie nie wiem jak rozbijać metody na mniejsze części
3
komentarz 2 listopada 2017 przez CenterPL Pasjonat (19,070 p.)

Nie mogę zrozumieć klas abstrakcyjnych

Wyobraź sobie, że mamy klasę Ssak. Zobacz - jako ssak możesz ssać, jeść itp, itd, ale nie jesteś tylko ssakiem - musisz być czymś więcej, jesteś obiektem klasy Człowiek, który ma dodatkowe "funkcje", takie jak np mowa itp, a dookoła masz np obiekt klasy Pies, który przecież też jest ssakiem, ale kompletnie różnym niż Ty. W tym wypadku klasa Ssak jest abstrakcyjna - bo nie znajdziesz obiektu będącego bezpośrednio instancją tej klasy - nie ma istoty, która jest tylko i wyłącznie Ssakiem. A Człowiek, to klasa, która rozszerza (dziedziczy) po klasie Ssak (również Pies) - czyli ma jej funkcje, ale dodatkowo swoje, unikalne. Macie jednak z Psem coś wspónego - ssiecie :P

Reasumując - klasa abstrakcyjna, to klasa, z której nie możesz utworzyć obiektu reprezentującego bezpośrednio tę klasę. To tak nie wchodząc bardzo w szczegóły.

ogólnie nie wiem jak rozbijać metody na mniejsze części

To przyjdzie z praktyką. Jednak ogólna zasada jest taka: zadaj sobie pytanie co ta metoda robi - jeśli robi więcej niż jedną rzecz, rozbij to na kolejną. Staraj się mieć metody możliwie małe i proste. Tak samo jeśli w metodzie masz kod, który gdzieś potem używasz - wyodrębnij go do osobnej metody. To serio przyjdzie z czasem, tym bym się tak bardzo nie martwił. 

komentarz 2 listopada 2017 przez Krzysio4224 Obywatel (1,690 p.)
Obiekt to wywołanie klasy ($Człowiek = new Claas)?
1
komentarz 2 listopada 2017 przez CenterPL Pasjonat (19,070 p.)

obiekt, to instancja "reprezentant" danej klasy. Na tym bazuje programowanie obiektowe. 

<?php
   abstract class Ssak
   {
        public function ssij()
        {
            //kod
        }
    }

$ssak = new Ssak(); //TAK SIĘ NIE DA

    class Czlowiek extends Ssak
    {
        public function mow(String $co): String
        {
            //kod
        }
    }

$czlowiek = new Czlowiek(); //A TAK OWSZEM
//wtedy mozesz:
$czlowiek -> ssij();
$czlowiek -> mow("Lorem ipsum");
?>

 

komentarz 2 listopada 2017 przez Krzysio4224 Obywatel (1,690 p.)
Dziękuję teraz bardziej mi się rozjaśniło. Jeszcze nigdy nie napisałem projektu w obiektowym PHP, słyszałem coś o wzorcach i mam pytanie czy gdy użyje np wzorcu DI to muszę go zawsze używać czy tylko tam gdzie jest mi potrzebny ?

 

Ps $czlowiek = new ssak to tworzenie obiektu, instancji ?
1
komentarz 2 listopada 2017 przez CenterPL Pasjonat (19,070 p.)

Nie wiem czy nie wybiegasz za daleko. Ogólnie wzorców stosuje się, gdy jest taka potrzeba (albo może lepiej możliwość ;)) i dobrze jest je stosować. Nie mniej jeśli dopiero zaczynasz, nie zaprzątaj sobie nimi głowy. Napisz jakiś projekt, prawdopodobnie mimochodem gdzieś i tak jakiegoś użyjesz. Poza tym Depedency Injection nie należy do takich bardzo podstawowych wzorców i specjalnie łatwy nie jest.

Ps $czlowiek = new ssak to tworzenie obiektu, instancji ?

Tak, ale nie utworzysz takiej, bo ssak jest klasa abstrakcyjną ;)  

komentarz 2 listopada 2017 przez Krzysio4224 Obywatel (1,690 p.)
Zamiast ssak miałem napisać człowiek, ale się zamyśliłem :p, czy da się źle wykorzystać obiektowe programowanie w projekcie?, napiszesz jakieś cenne wskazówki,porady ?
1
komentarz 2 listopada 2017 przez CenterPL Pasjonat (19,070 p.)
Przy odrobinie chęci wszystko się da. Możesz nabrać złych nawyków, np tworzenie tzw. "god class", czyli klasy robiące wszystko i będące wielkimi krowami. A zasada brzmi "jedna klasa = jedna odpowiedzialność". Ogólnie zapoznaj się z zasadami SOLID, to taka podstawa. I pierwszy wzorzec do nauki to chyba MVC i Front controller. Pisz dużo, szukaj odpowiedzi w internecie i się nie poddawaj. Wytrwałości życzę ;)
komentarz 2 listopada 2017 przez Krzysio4224 Obywatel (1,690 p.)
Dziękuję za pomoc

Podobne pytania

0 głosów
2 odpowiedzi 657 wizyt
0 głosów
2 odpowiedzi 135 wizyt
0 głosów
1 odpowiedź 378 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...