public static void main(String[] args) throws XPathExpressionException, ParserConfigurationException, SAXException, IOException {
xmlParser app = new xmlParser();
//app.parse();
app.findBooksGenreRomance();
}
private void findBooksGenreRomance() throws ParserConfigurationException,
SAXException, IOException, XPathExpressionException {
DocumentBuilderFactory domFactory = DocumentBuilderFactory
.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse("books.xml");
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr1 = xpath.compile("//book[genre='Romance']");
Object result1 = expr1.evaluate(doc, XPathConstants.NODESET);
NodeList nodes1 = (NodeList) result1;
for (int i = 1; i < nodes1.getLength()+1; i++) {
System.out.println("Book " + i + ":");
XPathExpression expr = xpath.compile("//book[genre='Romance']["+i+"]/*/text()");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int x = 0; x < nodes.getLength(); x++) {
System.out.println(nodes.item(x).getNodeValue());
}
System.out.println("##########################################");
}
}
środa, 15 lipca 2009
wtorek, 14 lipca 2009
Modyfikacja Oli
public static void main(String[] args) {
System.setSecurityManager( new RMISecurityManager() );
try {
RMIInterface r = (RMIInterface)Naming.lookup ("rmi://10.10.0.131/ServiceName");
r.setInfo("Test");
String s = r.getInfo();
while(true)
{
Thread.sleep(200);
String s2 = r.getInfo();
if(s2 != null && !s2.equals(s))
{
System.out.println("Current info: " + r.getInfo());
s = r.getInfo();
}
}
} catch(Exception e) { e.printStackTrace(); }
}
System.setSecurityManager( new RMISecurityManager() );
try {
RMIInterface r = (RMIInterface)Naming.lookup ("rmi://10.10.0.131/ServiceName");
r.setInfo("Test");
String s = r.getInfo();
while(true)
{
Thread.sleep(200);
String s2 = r.getInfo();
if(s2 != null && !s2.equals(s))
{
System.out.println("Current info: " + r.getInfo());
s = r.getInfo();
}
}
} catch(Exception e) { e.printStackTrace(); }
}
Innowacja :P do klasy Client (tylko fragment bloku try)
try {
RMIInterface r = (RMIInterface) Naming.lookup("rmi://10.10.0.131/ServiceName");
System.out.println("Current info: " + r.getInfo());
String s = r.getInfo();
while(true)
{
Thread.sleep(200);
if (!s.equals(r.getInfo()))
{
System.out.println("Current info: " + r.getInfo());
s = r.getInfo();
}
}
}
RMIInterface r = (RMIInterface) Naming.lookup("rmi://10.10.0.131/ServiceName");
System.out.println("Current info: " + r.getInfo());
String s = r.getInfo();
while(true)
{
Thread.sleep(200);
if (!s.equals(r.getInfo()))
{
System.out.println("Current info: " + r.getInfo());
s = r.getInfo();
}
}
}
poniedziałek, 6 lipca 2009
Zintegrowane Systemy Informatyczne:
MRP (Material Requirements Planning)
-zarządzanie magazynem
-minimalizowanie kosztów produkcji
-kontrola wykorzystania zapasów
MRP II(Manufacturing Resource Planning)
-planowanie działalności
-harmonogramowanie produkcji
-planowanie zapotrzebowania materiałowego
-planowanie zapotrzebowania potencjału
-sterowanie produkcją
ERP(Enterprise Resource Planning)
MRP II + zasięg wielofabrykatowy
ERP II(Enterprise Resource Planning Internet Integration)
ERP + CRM + www + sklepy internetowe
MRP (Material Requirements Planning)
-zarządzanie magazynem
-minimalizowanie kosztów produkcji
-kontrola wykorzystania zapasów
MRP II(Manufacturing Resource Planning)
-planowanie działalności
-harmonogramowanie produkcji
-planowanie zapotrzebowania materiałowego
-planowanie zapotrzebowania potencjału
-sterowanie produkcją
ERP(Enterprise Resource Planning)
MRP II + zasięg wielofabrykatowy
ERP II(Enterprise Resource Planning Internet Integration)
ERP + CRM + www + sklepy internetowe
piątek, 3 lipca 2009
Obrotowy samochód
public Point[] GetCarBoundaries()
{
Point[] corners=new Point[4];
//
//
// nar2************nar1
// * *
// * loc *--------- 0 rad
// * *
// nar3************nar4
double d=Math.Sqrt(Math.Pow(0.5*this.carSize.Width,2.0)+Math.Pow(0.5*this.carSize.Height,2));
double katOdchyleniaNaroznika = Math.Asin(0.5*this.carSize.Width/d);
corners[0].X = (int)( Math.Cos(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d + this.carLocation.longitude);
corners[0].Y = (int)( Math.Sin(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d + this.carLocation.latitude);
corners[1].X = (int)( -(Math.Cos(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d) + this.carLocation.longitude);
corners[1].Y = (int)( -(Math.Sin(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d) + this.carLocation.latitude);
corners[2].X = (int)( -(Math.Cos(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d) + this.carLocation.longitude);
corners[2].Y = (int)( -(Math.Sin(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d) + this.carLocation.latitude);
corners[3].X = (int)( Math.Cos(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d + this.carLocation.longitude);
corners[3].Y = (int)( (Math.Sin(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d) + this.carLocation.latitude);
return corners;
}
{
Point[] corners=new Point[4];
//
//
// nar2************nar1
// * *
// * loc *--------- 0 rad
// * *
// nar3************nar4
double d=Math.Sqrt(Math.Pow(0.5*this.carSize.Width,2.0)+Math.Pow(0.5*this.carSize.Height,2));
double katOdchyleniaNaroznika = Math.Asin(0.5*this.carSize.Width/d);
corners[0].X = (int)( Math.Cos(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d + this.carLocation.longitude);
corners[0].Y = (int)( Math.Sin(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d + this.carLocation.latitude);
corners[1].X = (int)( -(Math.Cos(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d) + this.carLocation.longitude);
corners[1].Y = (int)( -(Math.Sin(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d) + this.carLocation.latitude);
corners[2].X = (int)( -(Math.Cos(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d) + this.carLocation.longitude);
corners[2].Y = (int)( -(Math.Sin(this.AxisDirection / 180 * Math.PI + katOdchyleniaNaroznika) * d) + this.carLocation.latitude);
corners[3].X = (int)( Math.Cos(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d + this.carLocation.longitude);
corners[3].Y = (int)( (Math.Sin(this.AxisDirection / 180 * Math.PI - katOdchyleniaNaroznika) * d) + this.carLocation.latitude);
return corners;
}
Dzień 5
Delegaty
podejscie do programowania w formie interfejsu graficznego-> Systemy sterowane zdarzeniowo(gdzie zdarzeniem moze byc np. klikniecie myszka, przesuniecie kursora, przytrzymanie klawisza)
Zeby system mogl sie skomunikowac z programem musi znac wskaznik(czyli delegat) do funkcji ktora ma uruchomic (zasada callback)
podejscie do programowania w formie interfejsu graficznego-> Systemy sterowane zdarzeniowo(gdzie zdarzeniem moze byc np. klikniecie myszka, przesuniecie kursora, przytrzymanie klawisza)
Zeby system mogl sie skomunikowac z programem musi znac wskaznik(czyli delegat) do funkcji ktora ma uruchomic (zasada callback)
czwartek, 2 lipca 2009
Kolekcje
static void Main(string[] args)
{
Kolor czarny;
czarny.Red=0;
czarny.Green=0;
czarny.Blue=0;
czarny.Transparency=0;
//ArrayList
ArrayList lista = new ArrayList();
lista.Add(new Point(10, 1));
lista.Add(new Point(3, 4));
lista.Add(new Triangle(czarny,czarny,"t1",3,4,5));
Console.WriteLine("Pojemność={0}",lista.Capacity);
Console.WriteLine("Liczba elementów={0}",lista.Count);
Console.WriteLine(lista[2]);
Wypisz(lista);
//QUeue
Console.WriteLine("kolejka");
Queue kolejka = new Queue(lista);
kolejka.Enqueue(new Rectangle(czarny, czarny, "r1", 1, 123));
kolejka.Dequeue();
Wypisz(kolejka);
//Stack
Console.WriteLine("stos");
Stack stos = new Stack(kolejka);
Wypisz(stos);
stos.Push(new Triangle(czarny,czarny,"na górze trójkąt",5,6,7));
Console.WriteLine("stos z nowym elementem");
Wypisz(stos);
stos.Pop();
Console.WriteLine("stos po zdjęciu elementu");
Wypisz(stos);
//Hashtable
Console.WriteLine("hashtable");
Hashtable htab = new Hashtable();
htab.Add(lista[0].GetHashCode(), lista[0]);
htab.Add(lista[1].GetHashCode(), lista[1]);
htab.Add(lista[2].GetHashCode(), lista[2]);
Wypisz(htab);
}
private static void Wypisz(ICollection kolekcja)
{
foreach (Object o in kolekcja)
{
Console.WriteLine(o.ToString());
}
}
{
Kolor czarny;
czarny.Red=0;
czarny.Green=0;
czarny.Blue=0;
czarny.Transparency=0;
//ArrayList
ArrayList lista = new ArrayList();
lista.Add(new Point(10, 1));
lista.Add(new Point(3, 4));
lista.Add(new Triangle(czarny,czarny,"t1",3,4,5));
Console.WriteLine("Pojemność={0}",lista.Capacity);
Console.WriteLine("Liczba elementów={0}",lista.Count);
Console.WriteLine(lista[2]);
Wypisz(lista);
//QUeue
Console.WriteLine("kolejka");
Queue kolejka = new Queue(lista);
kolejka.Enqueue(new Rectangle(czarny, czarny, "r1", 1, 123));
kolejka.Dequeue();
Wypisz(kolejka);
//Stack
Console.WriteLine("stos");
Stack stos = new Stack(kolejka);
Wypisz(stos);
stos.Push(new Triangle(czarny,czarny,"na górze trójkąt",5,6,7));
Console.WriteLine("stos z nowym elementem");
Wypisz(stos);
stos.Pop();
Console.WriteLine("stos po zdjęciu elementu");
Wypisz(stos);
//Hashtable
Console.WriteLine("hashtable");
Hashtable htab = new Hashtable();
htab.Add(lista[0].GetHashCode(), lista[0]);
htab.Add(lista[1].GetHashCode(), lista[1]);
htab.Add(lista[2].GetHashCode(), lista[2]);
Wypisz(htab);
}
private static void Wypisz(ICollection kolekcja)
{
foreach (Object o in kolekcja)
{
Console.WriteLine(o.ToString());
}
}
Dzień 4
Dziedziczenie i polimorfizm.
Dziedziczenie:
Stworzenie klasy potomnej i określenie kto jest jej rodzicem
W c# można zabezpieczyć klasę przed dziedziczeniem używając polecenia sealed
Polimorfizm:
Wielopostaciowość - wielopostaciowe są klasy i obiekty.
Przysłanianie metod - override
Metoda abstrakcyjna to taka, która nie ma ciała.
Interfejs:
Klasa, która zawiera wyłącznie metody abstrakcyjne. Definiuje tylko nazwy metod.
Porządkuje klasy
Możemy implementować wiele interfejsów w jednej klasie.
Rzutowanie:
Tymczasowa zmiana typu zmiennej lub obiektu.
Obsługa wyjątków.
Wyjątki systemowe i Aplikacyjne.
Klasy wewnętrzne:
Mają dostęp do wszystkich składowych klasy zewnętrznej w stosunku o niej.
Są wykorzystywane do obsługi zdarzeń.
Garbage collector :
Przegląda pamięć w poszukiwaniu el. do usunięcia i je usuwa. Pamięć staje się ponownie dostępna. Ogranicza zużywanie rzadkich zasobów sieciowych.
Dwie metody: finalize, dispose (uruchamiana ręcznie).
Rzadkie zasoby systemowe - np. połączenia sieciowe, otwarte pliki.
Kolekcje:
Typy kolekcji:
Typy generyczne:
Pozwalają określić jakiego typu obiekty są składowane w kolekcjach.
Tworzenie grafu dla programu Graphviz przy użyciu biblioteki QuickGraph
Aby program nie interpretował danego łańcucha znaków wstawiamy symbol "@"
Tworzenie gry - jazda samochodem między przeszkodami.
Dziedziczenie:
Stworzenie klasy potomnej i określenie kto jest jej rodzicem
W c# można zabezpieczyć klasę przed dziedziczeniem używając polecenia sealed
Polimorfizm:
Wielopostaciowość - wielopostaciowe są klasy i obiekty.
Przysłanianie metod - override
Metoda abstrakcyjna to taka, która nie ma ciała.
Interfejs:
Klasa, która zawiera wyłącznie metody abstrakcyjne. Definiuje tylko nazwy metod.
Porządkuje klasy
Możemy implementować wiele interfejsów w jednej klasie.
Rzutowanie:
Tymczasowa zmiana typu zmiennej lub obiektu.
Obsługa wyjątków.
Wyjątki systemowe i Aplikacyjne.
- Systemowe - nie wymaga obsłużenia.
- Aplikacyjne - muszą zostać obsłużone, wymaga tego kompilator
Klasy wewnętrzne:
Mają dostęp do wszystkich składowych klasy zewnętrznej w stosunku o niej.
Są wykorzystywane do obsługi zdarzeń.
Garbage collector :
Przegląda pamięć w poszukiwaniu el. do usunięcia i je usuwa. Pamięć staje się ponownie dostępna. Ogranicza zużywanie rzadkich zasobów sieciowych.
Dwie metody: finalize, dispose (uruchamiana ręcznie).
Rzadkie zasoby systemowe - np. połączenia sieciowe, otwarte pliki.
Kolekcje:
Typy kolekcji:
- Kolejka (FIFO)
- Lista (Rozmiar to max. dostępnej pamięci operacyjnej włącznie z plikiem wymiany)
- Stos (LIFO)
- Słownik (Hashtable) - Przechowuje pary "klucz-wartość" Pozwala na szybkie dostanie się do obiektu, oszczędzając dostępne zasoby. Klucz jedno znacznie identyfikuje obiekt.
Typy generyczne:
Pozwalają określić jakiego typu obiekty są składowane w kolekcjach.
Tworzenie grafu dla programu Graphviz przy użyciu biblioteki QuickGraph
Aby program nie interpretował danego łańcucha znaków wstawiamy symbol "@"
Tworzenie gry - jazda samochodem między przeszkodami.
środa, 1 lipca 2009
Skręcanie w Lewo i Prawo -.-
public void TurnLeft()
{
if (speed > 0.0)
{
if (AxisDirection == 360)
{
AxisDirection = 0;
AxisDirection = AxisDirection + 10;
}
else
{
AxisDirection = AxisDirection + 10;
}
}
}
public void TurnRight()
{
if (speed > 0.0)
{
if (AxisDirection == 0)
{
AxisDirection = 360;
AxisDirection = AxisDirection - 10;
}
else { AxisDirection = AxisDirection - 10; }
}
}
public void TurnLeft()
{
if (speed > 0.0)
{
if (AxisDirection == 360)
{
AxisDirection = 0;
AxisDirection = AxisDirection + 10;
}
else
{
AxisDirection = AxisDirection + 10;
}
}
}
public void TurnRight()
{
if (speed > 0.0)
{
if (AxisDirection == 0)
{
AxisDirection = 360;
AxisDirection = AxisDirection - 10;
}
else { AxisDirection = AxisDirection - 10; }
}
}
Do czytania
http://pl.wikipedia.org/wiki/Sortowanie_topologiczne
http://pl.wikipedia.org/wiki/Skierowany_graf_acykliczny
http://pl.wikipedia.org/wiki/Graf_skierowany
http://pl.wikipedia.org/wiki/Graf_(matematyka)
http://pl.wikipedia.org/wiki/Skierowany_graf_acykliczny
http://pl.wikipedia.org/wiki/Graf_skierowany
http://pl.wikipedia.org/wiki/Graf_(matematyka)
DZIEŃ 3.
Operatory logiczne w C#
i - &&
lub - ||
różne - !
Programowanie strukturalne a obiektowe
Programowanie strukturalne:
- ciąg instrukcji, tworzących pewną strukturę
- struktury tworzone są na stosie
Programowanie obiektowe:
- program to już nie jest struktura poleceń a zbiór obiektów, wchodzących między sobą w interakcję
- występują obiekty i klasy*
- obiekty tworzone na stercie (ciągłej przestrzeni pamięci dostępnej w programie)
- na obiektach można wykonywać operacje
Filary programowania obiektowego
- hermetyzacja
- dziedziczenie
- polimorfizm
*klasa - pewien wzorzec tego, jak będą wyglądać poszczególne obiekty
[ Ćwiczenia z programowania obiektowego ]
Subskrybuj:
Posty (Atom)