Programowanie obiektowe


Zajęcia 1 

Zajęcia 2 - Wprowadzenie do Javy i C#

Zadanie:
Java:

C#:

using System;
using System.IO;
using System.Collections.Generic;

namespace po1
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
           
            Random rnd = new Random();
            int x = rnd.Next(20);
           
            string str = Console.ReadLine();
            int y = int.Parse(str);
           
            Console.WriteLine("x = " + x + ", y = " + y);
           
            TextWriter writer = new StreamWriter("out.txt");
            writer.WriteLine("Ala ma kota");
            writer.Close();
           
            TextReader reader = new StreamReader("out.txt");
            string line;
            while((line = reader.ReadLine()) != null)
                Console.WriteLine(line);
            reader.Close();
           
            List<string> list = new List<string>();
            list.Add("Białystok");
            list.Add("Warszawa");
            list.Add("Kraków");

            list.Sort();

            list[0] = "Wrocław";
           
            foreach(string s in list)
                Console.WriteLine(s);
           
            int[] ar = new int[10];
            for(int i = 0; i < ar.Length; ++i)
                ar[i] = 2*i+1;
            foreach(int s in ar)
                Console.WriteLine(s);
        }
    }
}

Zajęcia 3

Zaimplementuj klasę Stos.

Zajęcia 4

Zadanie 1.
W języku JAVA lub C# stwórz klasę Dane posiadającą następujące metody:
Napisz program, w którym tworzone są obiekty klasy Dane i wykorzystywane są zaimplementowane metody.

Zadanie 2.
Stwórz klasę symulującą śmigłowiec. Dla każdego śmigłowca okreslamy w przestrzeni trójwymiarowej punkt początkowy oraz końcowy lotu.
Śmigłowiec może wznosić się, opadać, lecieć do przodu, do tyłu oraz na boki.
W każdym momencie lotu istnieje możliwość podania odległości do celu.

Zadanie 3.
Napisz klasę symulującą kolejkę. Dla każdego pociągu określamy początek i koniec trasy oraz liczbę stacji pośrednich.
Pociąg może przyspieszać, zwalniać, otwierać (pod warunkiem, że stoi na stacji i drzwi są jeszcze zamkniete)
i zamykać drzwi (pod warunkiem, że stoi na stacji i drzwi zostały wcześniej otwarte).
W pociągu może zmieścić się ograniczona liczba pasażerów. Na każdej stacji mogą wsiadać i wysiadać kolejni pasażerowie.
W trakcie jazdy pociągu, możemy sprawdzić ile wynosi obecna prędkość oraz ilu pasażerów obecnie podróżuje kolejką.

Zajęcia 5

Zadanie 1
Zdefiniuj klasę Zespolona (reprezentującą liczbę zespoloną) i przetestuj jej działanie przy użyciu przykładowego programu.
Zespolona
powinna zawierać: Uwaga: metoda dodaj modyfikuje obiekt, z którego została wywołana, natomiast metoda plus generuje nowy obiekt zawierajacy wynik dodawania.
Dodaj metody umożliwiające wykonanie pozostałych działań (odejmowanie, mnożenie, dzielenie).

Zajęcia 6

Napisz klasę reprezentującą (pojedynczą) aukcję Allegro. Postaraj się nie umieszczać w metodach kodu wypisującego bądź wczytującego dane - komunikacja powinna odbywać się wyłącznie przy pomocy argumentów oraz wartości zwracanej.
Z tego powodu zamiast metody w stylu "wypisz" lepiej jest napisać metodę toString, zwracajacą tekst, ktory będziemy mogli później wypisać:
public String toString() { return "..."; }

Zajęcia 7

W C++ napisz klasę Wektor składającą się z N liczb zespolonych.
Klasa powinna składać się co najmniej z:
Podobnie jak w klasie Zespolona, metody dodaj, odejmij, mnoz modyfikują obiekt, z którego zostały wywołane, natomiast metody plus, minus, razy generują nowy obiekt zawierajacy wynik działania.

Zajęcia 8

Zadeklaruj klasę IntStream implementujacą strumień liczb naturalnych, posiadającą następujące metody:
Zadeklaruj dwie podklasy:
Wykorzystaj te klasy do implementacji klasy RandomWordStream realizujacej strumien losowych słów o długosciach równych kolejnym liczbom pierwszym.

Zajęcia 9

Dodaj do hierarchii figur z zadania z wykładu 7 metody: 'przesun', 'skaluj', 'pole'. Następnie:

Zajęcia 10

Przeprojektuj program z poprzednich zajęć, tak aby klasy Figura oraz Czworokąt były abstrakcyjne.

Zajęcia 11

Uzupełnij program z poprzednich zajęć o typy interfejsowe: IPrzesuwanie, ISkalowanie oraz IObracanie.
Przesuwać i skalować można każdą figurę. Obracaniu nie podlega koło.

Zajęcia 12

Napisz klasę Poczta, dającą dostęp do prostego systemu wymiany wiadomości
class Poczta {
    void nowekonto(String nazwa, String hasło);
    void loguj(String nazwa, String hasło);
    void wyloguj();
    void wyślij(String adresat, String wiadomość);
    String odbierz();
}

Poczta umożliwia: założenie nowego konta, zalogowanie i wylogowanie użytkownika, wysłanie wiadomości do innego użytkownika oraz odebranie nieprzeczytanych wiadomości (pod warunkiem, że jesteśmy zalogowani).
Przykład użycia klasy Poczta:
Poczta poczta = new Poczta();
poczta.nowekonto("adam", "abc");
poczta.nowekonto("ewa", "123");
poczta.loguj("ewa", "123");
poczta.wyślij("adam", "jabłko");
poczta.wyloguj();
poczta.loguj("adam", "abc");
System.out.println(poczta.odbierz());
poczta.wyloguj();
Przy pomocy mechanizmu wyjątków obsłuż wszelkie możliwe błędy. Błędy mogą dotyczyć nieprawidłowych danych (parametrów metod), np. użytkownik już istnieje, nieprawidłowe hasło, nieznany adresat, etc. lub też wewnętrznego stanu obiektu, np. próba wysłania czy odebrania wiadomości bez uprzedniego zalogowania, przepełniona skrzynka, etc.


Wytyczne odnośnie projektów końcowych

Składniki dokumentacji

Punktacja

Maksymalnie za projekt można uzyskać 10 punktów, za poszczególne elementy odpowiednio:
Opóźnienie w stosunku do zadanego terminu będę skutkowały obniżeniem uzyskanej liczby punktów o 0,5 pkt za każdy dzień spóźnienia.