JÄ™zyki Programowania Åšrodowisko BlueJ http://www.bluej.org 2 1 Zaczynamy pracÄ™ z BlueJ Klikamy dwukrotnie na ikonÄ™ BlueJ Otwieramy nowy projekt New Project Pojawia siÄ™ wiele predefiniowanych projektów (klas) Wybieramy nazwÄ™ przyklady 3 BlueJ, pierwsza klasa prawym przyciskiem myszy wywoÅ‚ujemy nowa klasa menu kontekstowe, z którego możemy np. dokonać edycji nazwa Hello powstaÅ‚a nowa klasa Hello.java 4 2 Edycja i kompilacja Edytor podaje gotowy kod zródÅ‚owy wczeÅ›niej zapisanej klasy Hello TworzÄ…c nowÄ… klasÄ™ trzeba ten kod wpisać, a potem można go modyfikować - edytować Gotowy kod można poddać tÅ‚umaczeniu - kompilacji 5 Tworzenie obiektów TworzÄ…c kolejny obiekt z danej klasy należy Klasa Hello w oknie mu nadać unikatowÄ… nazwÄ™, w tym przypadku BlueJ oznacza tylko, że np. hello3. Konstruktor obiektów sam klasa ta zostaÅ‚a podpowiada kolejne numery obiektów poprawnie skompilowana, na razie jednak nie można z niej korzystać w praktyce U doÅ‚u okna widać, że wczeÅ›niej zostaÅ‚y już utworzone dwa obiekty z klasy Hello o nazwach hello1 i hello2 6 3 Obiekty sedno programowania Obiekty sÄ… podstawÄ… idei progra- mowania obiektowego. W BlueJ wszystkie wÅ‚asnoÅ›ci obiektów można przywoÅ‚ać przez menu kontekstowe Można przy tym obejrzeć wewnÄ™trzne wÅ‚aÅ›ciwoÅ›ci obiektów (Inspect) lub usunąć obiekt (Remove) 7 Figury jako obiekty Otwieramy zdefiniowanÄ… przykÅ‚adowÄ… klasÄ™ shapes i tworzymy obiekty klas Circle Square Triangle Możemy nadać wÅ‚asne nazwy obiektów, np.: kolo kwadrat trojkat Lub zaakceptować proponowane przez BlueJ nazewnictwo typu: Uwaga: powszechnie przyjÄ™ta jest konwencja, że circle1 nazwy klas zaczynajÄ… siÄ™ od dużej, a nazwy circle2 obiektów od maÅ‚ej litery square1 8 4 Dlaczego nie widać kółka? Dokonujemy inspekcji obiektu kolo wybierajÄ…c z menu kontekstowego opcjÄ™ Inspect 9 isVisible = false Otwiera siÄ™ okno inspektora Parametr isVisible ma wartość false Należy go zmienić, ale w jaki sposób? 10 5 Metoda makeVisible() W menu kontekstowym obiektu kolo znajdujemy metodÄ™ makeVisible() Klikamy na tÄ™ opcjÄ™ i .... KoÅ‚o pojawia siÄ™ w oknie konsoli BlueJ 11 Badanie metod W podobny sposób powodujemy pojawienie siÄ™ obiektów kwadrat i trojkat NastÄ™pnie wywoÅ‚ujemy kolejno metody: obiekt kwadrat metoda moveRight() obiekt kolo metoda moveDown() obiekt kwadrat metoda moveRight() obiekt kwadrat metoda moveUp() 12 6 Metody z argumentami Zmienimy teraz wielkość koÅ‚a wywoÅ‚ujÄ…c zwiÄ…zanÄ… z nim metodÄ™ changeSize(int) Otwiera siÄ™ okno dialogowe, w które wprowadzamy nowÄ… wartość Å›rednicy koÅ‚a w pikselach Typ parametru int oznacza, że jest on liczbÄ… caÅ‚kowitÄ…. Wpisujemy wartość 100 i konsola pokazuje wiÄ™ksze koÅ‚o o Å›rednicy 100 pikseli 13 Kolejne obiekty tworzymy kolejne dwa obiekty klasy Circle kolo2 kolo3 i przesuwamy jedno z nich o 100 pikseli w prawo a drugie o 50 pikseli w dół, po czym uwidaczniamy je metodÄ… makeVisible() Na ekranie widzimy jednak tylko dwa niebieskie koÅ‚a. Gdzie jest trzecie koÅ‚o? Duże niebieskie koÅ‚o (obiekt kolo) przesÅ‚ania inne niebieskie koÅ‚o (obiekt kolo3) Aby uwidocznić obiekt kolo3 w jego menu szukamy metody changeColor(string) 14 7 Argumenty typu string Argumentem metody changeColor(String) jest Å‚aÅ„cuch znaków. W tym przypadku BlueJ pozwala wybrać jeden z 6 kolorów. Wybieramy np. yellow Na konsoli pojawia siÄ™ niewidoczne dotÄ…d żółte koÅ‚o (obiekt kolo3) 15 Powtórna inspekcja żð WywoÅ‚ujemy inspektora obiektu kolo i widzimy, że ma on nowe wartoÅ›ci pól: żð diameter żð xPosition żð yPosition żð isVisible żð Pola opisujÄ…ce obiekty majÄ… najczęściej jeden z trzech podstawowych typów: żð int żð String żð boolean 16 8 Malarz program Java żð DotÄ…d wszystkie operacje na klasach, obiektach i ich parametrach (wartoÅ›ciach pól) wykonywaliÅ›my interaktywnie, przy pomocy myszy i odpowiednich opcji w menu. Czy można te operacje zaprogramować w jÄ™zyku Java? żð W jaki sposób tworzyć obiekty i nadawać im nazwy używajÄ…c zapisu w jÄ™zyku Java, a w szczególnoÅ›ci jak żð Utworzyć obiekt klasy Circle i nadać mu nazwÄ™, np. kolo2 żð Utworzyć obiekt klasy Square i nadać mu nazwÄ™, np. kwadrat żð Jak zaprogramować takie czynnoÅ›ci? żð Stworzymy w tym celu nowÄ… klasÄ™ i nazwiemy jÄ… Malarz 17 Nowa klasa Malarz Otwieramy w BlueJ projekt shapes i tworzymy nowÄ… klasÄ™ o nazwie Malarz NastÄ™pnie zaczynamy edytować nowÄ… klasÄ™ 18 9 Klasa Malarz żð Po wywoÅ‚aniu edycji nowej klasy Malarz BlueJ otwiera okno klasy z tzw. szkieletem klasy. Kasujemy wszystko z wyjÄ…tkiem definicji class Malarz żð Oraz nawiasów klamrowych { } żð Nawiasy obejmujÄ… przyszÅ‚Ä… treść tworzonej klasy 19 Co ma zawierać klasa Malarz żð zakÅ‚adamy, że klasa Malarz, a wiÄ™c i obiekty utworzone z tej klasy powinny: żð tworzyć (rysować) obiekty w postaci kół, prostokÄ…tów i trójkÄ…tów i nadawać im nazwy żð zawierać metodÄ™, np. rysujDom( ), która: żð utworzy i umieÅ›ci w odpowiednich miejscach obiekty skÅ‚adowe tworzÄ…ce rysunek domu żð bÄ™dzie je mogÅ‚a powiÄ™kszać lub zmniejszać żð uwidoczni na konsoli poszczególne obiekty żð bÄ™dzie mogÅ‚a zmieniać barwy elementów rysunku domu 20 10 Tworzenie obiektów żð Tworzenie (konstrukcja) obiektów skÅ‚ada siÄ™ z dwóch kroków: żð rejestruje siÄ™ nazwÄ™ obiektu żð tworzy siÄ™ nowy obiekt i zapamiÄ™tuje z nadana wczeÅ›niej nazwÄ… zarejestruj nazwÄ™ slonce dla Circle slonce; jeszcze nieutworzonego obiektu klasy Circle slonce = new Circle( ); utwórz nowy obiekt klasy Circle i nadaj mu nazwÄ™ slonce Uwaga: Java rozróżnia wielkość liter, dlatego: CIRCLE `" Circle `" circle 21 Rejestracja przy tworzeniu żð RejestracjÄ™ i utworzenie (konstrukcjÄ™) obiektu można również wykonać w jednym kroku. Aby w ten sposób utworzyć nowy obiekt klasy Circle i nadać mu nazwÄ™ slonce należy napisać: Circle slonce = new Circle( ); Rejestruj nazwÄ™ obiektu Utwórz nowy obiekt klasy slonce, który należy do Circle klasy Circle 22 11 Klasa Malarz z obiektami Klasa może być już kompilowana Można tworzyć obiekty W czasie kompilacji nie wystÄ…piÅ‚y żadne bÅ‚Ä™dy 23 Malarz prymitywista W menu kontekstowym klasy Malarz wybieramy opcjÄ™ new Malarz(), tworzymy nowy obiekt tej klasy i nadajemy mu nazwÄ™ prymitywista NastÄ™pnie wchodzimy do inspekcji obiektu prymitywista 24 12 Inspekcja obiektu prymitywista StrzaÅ‚ki oznaczajÄ… odwoÅ‚anie do obiektu