Commit f82eb41d by Patryk Czarnik

Poprawki i porządki

parent e8a46776
package gotowe.p13_abstrakcyjne;
import java.util.Locale;
public abstract class Figura {
private String kolor;
protected Figura(String kolor) {
this.kolor = kolor;
}
public abstract double pole();
public abstract double obwod();
public String getKolor() {
return kolor;
}
/* Dodatkowa rzecz, którą dopisałem po zajęciach.
* Przy okazji:
* 1) To jest przykład zastosowania wzroca "template method", który polega na tym,
* że w klasie abstrakcyjnej definiuje się metodę M, w której treści wywoływana
* jest metoda abstrakcyjna A. Podklasy tej klasy anstrakcyjnej definiują brakującą metodę A.
* W nadklasie zdefiniowane jest jakieś działanie na poziomie ogólnym,
* a podklasy uzupełniają szczegóły w odpowiedni dla siebie sposób.
* 2) Od Java 17 istnieją Stringi blokowe, które zapisuje się w potrójnych cudzysłowach.
* Poziom wcięcia "zero" jest określany poprzez cudzysłowy zamykające.
*/
public void wypiszInfo() {
System.out.printf(Locale.US, """
To jest figura klasy %s, jej kolor jest %s.
Pole wynosi %s cm², a obwód %s cm.
""", this.getClass().getSimpleName(), this.getKolor(),
this.pole(), this.obwod());
}
}
package gotowe.p13_abstrakcyjne;
public class Kolo extends Figura {
private double promien;
public Kolo(String kolor, double promien) {
super(kolor);
this.promien = promien;
}
public double getPromien() {
return promien;
}
@Override
public double pole() {
return Math.PI * promien * promien;
}
@Override
public double obwod() {
return Math.PI * 2 * promien;
}
}
package gotowe.p13_abstrakcyjne;
public class Program {
public static void main(String[] args) {
// Można deklarować zmienne typu "klasa abstrakcyjna".
Figura f1 = null;
// Ale nie można tworzyć obiektów klasy abstrakcyjnej.
// Figura f2 = new Figura("blue");
// System.out.println(f2);
Kolo kolo = new Kolo("green", 5);
System.out.println(kolo);
System.out.println(kolo.getPromien() + " " + kolo.getKolor());
System.out.println(kolo.pole() + " " + kolo.obwod());
// Obiekt podklasy mogę wpisać do zmiennej typu nadklasa
f1 = kolo;
// teraz dostępne są te metody, które były zadklarowane w nadklasie
// każda figura ma kolor, pole i obwód, ale nie każda ma promień
// System.out.println(f1.getPromien());
System.out.println(f1.getKolor());
System.out.println(f1.pole() + " " + f1.obwod());
Figura f3 = new Prostokat("red", 3, 4);
System.out.println(f3.pole() + " " + f3.obwod());
// System.out.println(f3.liczbaWierzcholkow());
System.out.println();
kolo.wypiszInfo();
f1.wypiszInfo();
f3.wypiszInfo();
}
}
package gotowe.p13_abstrakcyjne;
public class Prostokat extends Wielokat {
private double a, b;
public Prostokat(String kolor, double a, double b) {
super(kolor);
this.a = a;
this.b = b;
}
@Override
public int liczbaWierzcholkow() {
return 4;
}
@Override
public double pole() {
return this.a*this.b;
}
@Override
public double obwod() {
return 2*this.a + 2*this.b;
}
public double getA() {
return this.a;
}
public double getB() {
return this.b;
}
}
package gotowe.p13_abstrakcyjne;
// Można na kolejnym poziomie tworzyć klasę abstrakcyjną,
// teoretycznie jej podklasami mogą być trójkąt, czworokąt / prostokąt, itd...
public abstract class Wielokat extends Figura {
protected Wielokat(String kolor) {
super(kolor);
}
public abstract int liczbaWierzcholkow();
// nie mam obowiązku implementowaia pole i obwód, bo jestem w klasie abstrakcyjnej
}
......@@ -3,9 +3,9 @@ package gotowe.p22_wrappery;
public class Wrappery1_Podstawy {
public static void main(String[] args) {
// Dla każdego z 8 typów prostych istnieje odpowiadająca mu klasa ("opakowaniowa"?), tzw. "wrapper".
// Dla każdego z 8 typów prostych istnieje odpowiadająca mu klasa "opakowaniowa", tzw. "wrapper".
// Obiekt klasy wrapper zawiera w sobie wartość danego typu.
// Wszystkie klasy wrapperów są NIEMUTOWALNE, tzn. wartość w obiekcie nigdy nie ulega zmianie; /na zmienną typu wrapper można wpisać nowy obiekt, ale to nie to samo./
// Wszystkie klasy wrapperów są NIEMUTOWALNE, tzn. wartość w obiekcie nigdy nie ulega zmianie; /na zmienną typu wrapper można wpisać nowy obiekt, ale to nie to samo./
int i = 103;
......
......@@ -13,7 +13,7 @@ public class Wrappery2_Zastosowania {
Integer obiekt = Integer.valueOf(liczbaTekstowo);
System.out.println(liczba * 2);
System.out.printf("Typ %s ma %d bajty, czyli %d bity, minimalna wartość to %d, a maksymalna %d\n",
System.out.printf("Typ %s ma %d bajty, czyli %d bity, minimalna wartość to %d, a maksymalna %d\n",
Integer.TYPE.getSimpleName(), Integer.BYTES, Integer.SIZE, Integer.MIN_VALUE, Integer.MAX_VALUE);
// 2) Obiekt jako "wartość opcjonalna".
......
......@@ -34,7 +34,7 @@ public class Wrappery5_Null {
mapa.put("Ala", 30);
mapa.put("Ola", 40);
// typy błąd programisty:
// typowy błąd programisty:
// NullPointerException, bo mapa.get zwraca null, a my wpisujemy to na zmienną int
// int wiek = mapa.get("Ula");
// System.out.println(wiek);
......@@ -42,7 +42,7 @@ public class Wrappery5_Null {
Integer wiek2 = mapa.get("Ula");
System.out.println(wiek2);
// teraz operacje liczbowe będą powodowały błedy:
// teraz operacje liczbowe będą powodowały błędy:
// System.out.println(wiek2 + 1);
}
......
......@@ -5,7 +5,6 @@ import java.util.Arrays;
public class Tablice1_Motywacja {
public static void main(String[] args) {
// Motywacja:
// Gdybym potrzebował zapamiętać nie jedną wartość, ale kilka, co mogę zrobić?
......@@ -21,11 +20,9 @@ public class Tablice1_Motywacja {
System.out.println("Trzecia osoba to " + imie3);
System.out.println();
// Ale nie mam jak wykonać operacji "na raz dla wszystkich wartości". Trzeba instrukcję pisać osobno dla każdej zmiennej.
// Poza tym to się "nie skaluje" - nie obsłużymy w ten sposób dużych ilości danych.
// 2) Użyć tablicy lub kolekcji.
String[] imiona = new String[5];
imiona[1] = "Ala";
imiona[2] = "Ola";
......
......@@ -26,7 +26,7 @@ public class Tablice2_Tworzenie {
a[3] = 150;
System.out.println(Arrays.toString(a));
// Istniejącej tablicy nie da się rozszerzać, można najwyżej utowrzyć nową tablicę i wpisać na dotychczasową zmienną - ale to będzie utrata danych.
// Istniejącej tablicy nie da się rozszerzać, można najwyżej utworzyć nową tablicę i wpisać na dotychczasową zmienną - ale to będzie utrata danych.
// do zmiennej a można wpisać inną (np. nową) tablicę - dotychczasowa jest zapominana
a = new int[2*rozmiar];
System.out.println(Arrays.toString(a));
......
package gotowe.p31_streamy.b_dzialanie;
import java.util.List;
import java.util.stream.Stream;
public class Zamykanie {
public static void main(String[] args) {
List<String> lista = List.of("Warszawa", "Kraków", "Wrocław", "Łódź", "Poznań");
System.out.println("próba 0:");
lista.stream()
.onClose(() -> System.out.println("zamykanie 0"))
.map(String::toUpperCase)
.forEach(System.out::println);
// samo wywołanie forEach nie skutkuje wywołaniem close
System.out.println("____\npróba 1:");
lista.stream()
.onClose(() -> System.out.println("zamykanie 1"))
.map(String::toUpperCase)
// nie da się zapisać łańcuchowo tak ani odwrotnie:
// .close().forEachOrdered(System.out::println)
// .forEachOrdered(System.out::println).close()
// zrobię tylko close
.close();
System.out.println("____\npróba 2:");
Stream<String> stream2 = lista.stream().onClose(() -> System.out.println("zamykanie 2"));
stream2.map(String::toUpperCase).forEach(System.out::println);
stream2.close();
System.out.println("____\npróba 3:");
Stream<String> stream3 = lista.stream()
.map(String::toUpperCase)
.onClose(() -> System.out.println("zamykanie 3a"))
.onClose(() -> System.out.println("zamykanie 3b"));
stream3.forEach(System.out::println);
stream3.close();
System.out.println("____\npróba 4:");
try(Stream<String> stream4 = lista.stream()
.onClose(() -> System.out.println("zamykanie 4"))) {
stream4.map(String::toUpperCase)
.forEach(System.out::println);
}
System.out.println("____\npróba 5:");
try(Stream<String> stream5 = lista.stream()) {
stream5.onClose(() -> System.out.println("zamykanie 5"))
.map(String::toUpperCase)
.forEach(System.out::println);
}
}
}
package gotowe.p32_parallel_stream.a;
package gotowe.p31_streamy.e_parallel;
import java.util.Arrays;
import java.util.function.IntUnaryOperator;
......
package gotowe.p32_parallel_stream.a;
package gotowe.p31_streamy.e_parallel;
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicIntegerArray;
......
package gotowe.p32_parallel_stream.a;
package gotowe.p31_streamy.e_parallel;
import java.util.Random;
import java.util.function.LongSupplier;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.ArrayList;
import java.util.List;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.LinkedList;
import java.util.List;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.function.LongSupplier;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.Spliterator;
import java.util.function.Consumer;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.Spliterator;
import java.util.function.Consumer;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.Spliterator;
import java.util.function.IntConsumer;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.Spliterator;
import java.util.stream.Stream;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.stream.IntStream;
import java.util.stream.StreamSupport;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.Spliterator;
import java.util.function.Consumer;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.function.Consumer;
import java.util.stream.Stream;
......
package gotowe.p32_parallel_stream.b_spliterator;
package gotowe.p32_spliterator;
import java.util.function.IntConsumer;
import java.util.stream.IntStream;
......
package gotowe.p31_streamy;
package gotowe.p33_optional;
import java.time.LocalTime;
import java.util.ArrayList;
......
......@@ -14,8 +14,8 @@ public class Czytaj1 {
public static void main(String[] args) {
try {
//FileInputStream in = new FileInputStream("pliki/plik.txt");
InputStream in = new FileInputStream("pliki/plik.txt");
//FileInputStream in = new FileInputStream("plik.txt");
InputStream in = new FileInputStream("plik.txt");
System.out.println("Kolejne bajty:");
while(true) {
int bajt = in.read(); // wynik od 0 do 255: normalne dane, -1: koniec wejścia
......
......@@ -10,7 +10,7 @@ public class Czytaj2 {
public static void main(String[] args) {
try {
InputStream in = new FileInputStream("pliki/plik.txt");
InputStream in = new FileInputStream("plik.txt");
byte[] bufor = new byte[128];
while(true) {
......
......@@ -10,7 +10,7 @@ public class Czytaj3 {
public static void main(String[] args) {
// "try-with-resources" - konstrukcja automatycznego zamykania zasobów dostępna od Javy 7
try(InputStream in = new FileInputStream("pliki/plik.txt")) {
try(InputStream in = new FileInputStream("plik.txt")) {
byte[] bufor = new byte[128];
while(true) {
......
......@@ -37,7 +37,7 @@ public class Kopiuj3_kodowanie {
public static void main(String[] args) {
kopiuj("pliki/pan_tadeusz.txt", "wynik_win.txt");
kopiuj("pan_tadeusz.txt", "wynik_win.txt");
System.out.println("Koniec kopiowania");
}
......
......@@ -30,7 +30,7 @@ public class Upper3 {
public static void main(String[] args) {
kopiuj("pliki/pan_tadeusz.txt", "wynik_upper.txt");
kopiuj("pan_tadeusz.txt", "wynik_upper.txt");
System.out.println("Koniec kopiowania");
}
......
......@@ -29,7 +29,7 @@ public class Upper4 {
public static void main(String[] args) {
kopiuj("pliki/pan_tadeusz.txt", "wynik_lower.txt");
kopiuj("pan_tadeusz.txt", "wynik_lower.txt");
System.out.println("Koniec kopiowania");
}
}
package gotowe.p42_tekstowe;
package gotowe.p42_pliki_tekstowe;
import java.io.FileNotFoundException;
import java.io.FileReader;
......
package gotowe.p42_tekstowe;
package gotowe.p42_pliki_tekstowe;
import java.io.FileNotFoundException;
import java.io.FileReader;
......
package gotowe.p42_tekstowe;
package gotowe.p42_pliki_tekstowe;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
......
package gotowe.p42_tekstowe;
package gotowe.p42_pliki_tekstowe;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
......
package gotowe.p42_tekstowe;
package gotowe.p42_pliki_tekstowe;
import java.io.*;
import java.util.Scanner;
......
package gotowe.p42_tekstowe;
package gotowe.p42_pliki_tekstowe;
import java.io.File;
import java.io.FileNotFoundException;
......
package gotowe.p42_tekstowe;
package gotowe.p42_pliki_tekstowe;
import java.io.File;
import java.io.FileNotFoundException;
......
package gotowe.p42_tekstowe;
package gotowe.p42_pliki_tekstowe;
import java.io.IOException;
import java.nio.file.Files;
......
package gotowe.p42_tekstowe;
package gotowe.p42_pliki_tekstowe;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
public class Odczyt7_Lines {
......
......@@ -10,20 +10,23 @@ public class DStream {
// DirectoryStream nie wchodzi do podkatalogów
public static void main(String[] args) throws IOException {
Path dir = Paths.get("src");
DirectoryStream<Path> dstream = Files.newDirectoryStream(dir);
for(Path p : dstream) {
try(DirectoryStream<Path> dstream = Files.newDirectoryStream(dir)) {
for (Path p : dstream) {
System.out.println(p);
}
}
System.out.println("======");
// W DirectoryStream nie działają wildcardy wielopoziomowe (nie schodzi do podkatalogów)
dstream = Files.newDirectoryStream(dir, "**.java");
try(DirectoryStream<Path> dstream = Files.newDirectoryStream(dir, "**.java")) {
for(Path p : dstream) {
System.out.println(p);
}
}
System.out.println("======");
dstream = Files.newDirectoryStream(dir.resolve("main/java/alx/p43_files"), "*.java");
for(Path p : dstream) {
try(DirectoryStream<Path> dstream = Files.newDirectoryStream(dir.resolve("main/java/gotowe/p43_files"), "*.java")) {
for (Path p : dstream) {
System.out.println(p);
}
}
}
}
......@@ -11,7 +11,7 @@ public class Kopiowanie {
public static void main(String[] args) {
try {
String skad = "pan-tadeusz.txt";
String skad = "pan_tadeusz.txt";
String dokad = "kopia.txt";
Path pskad = Paths.get(skad);
......
package gotowe.p31_streamy.d_redukcje_i_grupowanie;
package na_zywo.lambdy;
import java.util.List;
import java.util.Map;
import java.util.TreeSet;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class ZbieranieDoKolekcji {
public class PrzykladZNumerami {
public static void main(String[] args) {
List<String> telefony = List.of("123321123", "+48123123123", "431 666 777",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment