30
Java un OOP pamati

Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

  • View
    223

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Java un OOP pamati

Page 2: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Ievads

• Nepieciešamas priekšzināšanas• Java Standard Edition

• Objektorientēta programmēšana

• Pārskata lekcijas par programmēšanas valodu Java• http://www.webkursi.lv/java-eim/de/index_java.html

Page 3: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Javas tehnoloģija

• Javas tehnoloģijā ietilpst:

• Javas programmēšanas valoda

• Javas standarta API un citas bibliotēkas

• Izstrādes vide un rīki, piemērām:• kompilēšanas rīks javac• CLASS koda interpretātors java• dokumentācijas ģenerēšanas rīks javadoc• klašu failu arhivēšanas rīks jar

• Aplikāciju darbināšanas vide • Java Runtime Environment

Page 4: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Javas vides uzstādīšana

• Ielādēt Java Developer Kit (JDK) no Interneta• Uzinstalēt to, piemērām, direktorijā c:\

Program Files\Java\jdk1.6.0 • Izpildāmas programmas atrodas apakšdirektorijā

• \bin\java.exe• \bin\javac.exe

• Lai ar Javu strādāt no patvaļīgas direktorijas• definēt sistēmas vides mainīgo JAVA_HOME ar

vērtību c:\Program Files\Java\jdk1.6.0

• pievienot PATH sistēmas mainīgajam direktoriju %JAVA_HOME%\bin

Page 5: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Vienkārša Javas programma

ClockMain.java

package sample1;

public class ClockMain { public static void main(String[] args) { MyClock myClock = new MyClock(); System.out.println(myClock.getMessage()); }}

MyClock.java

package sample1;

import java.util.Date;

public class MyClock { public String getMessage() { Date d = new Date(); return "Pareizs laiks: " + d; }}

Kompilēšana un palaišana:

javac ClockMain.java

java ClockMain

Page 6: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Kompilācija un izpilde

Page 7: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Javas Virtuālā Mašīna (JVM)

• The Java Virtual Machine is an abstract computing machine

• The JVM is the component of the technology responsible for • its hardware- and operating system- independence • the small size of its compiled code• ability to protect users from malicious programs

• The JVM knows nothing of the Java programming language, only of a particular binary platform-independent .class format

Page 8: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Klašu ielādētājs (classloader)

• The Java Classloader is a part of the JRE that dynamically loads Java classes into the JVM

• Class files are not loaded into memory all at once, but rather are loaded on-demand, as needed by the program

Page 9: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

JAR faili

• JAR = Java Archive

• Šīs formāts atļauj apvienot vairākas klases vienā arhīvā (līdzīgi ZIP formātam)

• Parasti JAR faili satur klašu failus un papildus resursus

• JAR faila izveidošana

jar cf jar-file input-file(s)

Page 10: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Classpath

• Classpath is arguments, kurš saka Javas Virtuālai Mašīnas kur meklēt pakotnes un klases

• Claspath var uzstādīt:• No komandu rindas

• Kā sistēmas vides mainigo

java -classpath D:\myprogram;D:\myprogram\lib\supportLib.jar org.mypackage.HelloWorld

set CLASSPATH=D:\myprogram;D:\myprogram\lib\supportLib.jar java org.mypackage.HelloWorld

Page 11: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Objektorientētā programmēšana

• Klase (class)

• Objekts (object)

• Interfeiss (interface)

• Abstrakcija (abstraction)

• Iekapsulēšana (encapsulation)

• Mantošana (inheritance)

• Polimorfisms (polymorphism)

Page 12: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Interfeiss

• Interfeiss ir kontrakts starp klasi un ārējo pasauli

• Kad klase implementē interfeisu, tā apsola nodrošināt uzvedību, ko pasludina interfeiss

• Daudzas klases var implementēt vienu un to pašu interfeisu

• Klase var implementēt vairākus interfeisus

Page 13: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Interfeisa piemērspublic interface Flyer { public void takeOff(); public void land(); public void fly();}

public class Airplane implements Flyer { public void takeOff() { // accelerate until lift-off // raise landing gear } public void land() { // lower landing gear // deccelerate and lower flaps until touch-down // apply breaks } public void fly() { // keep those engines running }}

Page 14: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Sadalīšana sastāvdaļās (decomposition)

Priekšrocības, ja programmu dala mazākās daļās:

• Darba dalīšana: var paātrināt izstrādi, sadalot cilvēkiem

• Atkalizmantošana: dažus gabalus, kuri ir kopīgi vairākām programmām var izgatavot vienreiz un lietot daudzkur

• Modulāra analīze: katru daļu var atsevišķi pārbaudīt

• Izmaiņu lokalizējamība: izmaiņa parasti skar tikai dažas no daļām

Page 15: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Iekapsulēšana (encapsulation)

• Encapsulation is the concept that an object should totally separate its interface from its implementation. All the data and implementation code for an object should be entirely hidden behind its interface.

• The term encapsulation is often used interchangeably with data hiding

• Klases metodes ir public, atribūti ir private

Page 16: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Iekapsulēšana (piemērs 1-3)

• Sliktā, neobjektorientētā veidā

projektēta, Javas klase:

• Klienta programmai ir tieša pieeja šīs klases iekšējiem datiem:

MyDate d = new MyDate(); d.day = 32; // neesošs datumsd.month = 2; d.day = 29; // grūtāk noskaidrot datuma esamībud.day = d.day + 1; // nepārbauda mēneša beigas

Page 17: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Iekapsulēšana (piemērs 2-3)

• Uzlabots risinājums:

• Klienta programmai jālieto

setXxx()/getXxx() metodes,

lai piekļūtu iekšējiem datiem:

MyDate d = new MyDate(); d.setDay(32); // nederīga diena, atgriež "false"d.setMonth(2);d.setDay(30); // intervāliem atbilst, bet aplami,

// setDay atriž vērtību "false"d.setDay(d.getDay() + 1); // atgriež "false", ja ir mēneša beigas

Page 18: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Iekapsulēšana (piemērs 3-3)

• Lietojot iekapsulēšanu, klases MyDate iekšējo uzbūvi var mainīt (vienu privāto atribūtu vietā ieviešot citus utml.), bet ja nebūs izmainījusies publisko metožu uzvedība, šīs izmaiņas klases lietotāji nepamanīs.

Page 19: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Iekapsulēšana (kopsavilkums )

• Klases projektējums ar iekapsulēšanu:

• noslēpj klases implementācijas detaļas

• lietotājs spiests lietot interfeisu, lai piekļūtu datiem

• padara kodu vieglāk uzturamu

Page 20: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Mantošana

• Object-oriented programming allows classes to inherit commonly used state and behavior from other classes.

• Javas valodā:• katrai klasei var būt tikai

viena super-klase

• katrai super-klasei potenciāli

var eksistēt bezgalīgi daudz apakš-klases

class MountainBike extends Bicycle { // new fields and methods // defining a mountain bike would go here}

http://java.sun.com/docs/books/tutorial/java/concepts/inheritance.html

Page 21: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Javas platformas klašu hierarhija

• Klase java.lang.Object definē un implementē funkcijas un uzvedību, kas ir kopīga visām klasēm - ieskaitot Jūsu klases

http://java.sun.com/docs/books/tutorial/java/IandI/subclasses.html

java.lang.Object atrodas klašu hierarhijas augšā

Page 22: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

java.lang.Object metodes

• clone()• equals(Object obj)• finalize()• getClass()• hashCode()

Kādas Jūs varat nosaukt java.lang.Object klases metodes?

• notify()• notifyAll()• toString()• wait()

Page 23: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Polimorfisms

• Polymorphism is the capability of an action or method to do different things based on the object that it is acting upon.

public class AnimalReference{ public static void main(String args[]){ Animal ref; // set up var for an Animal Cow aCow = new Cow("Bossy"); // make specific objects Dog aDog = new Dog("Rover"); Snake aSnake = new Snake("Earnie");

// now reference each as an Animal ref = aCow; ref.speak(); ref = aDog; ref.speak(); ref = aSnake; ref.speak();}}

Page 24: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Ietvari/karkasi (frameworks) un API

No Wikipedia:• A software framework is a re-usable design for a software

system (or subsystem).

• Various parts of the framework may be exposed through an API.

Citiem vārdiem:• Ietvari/karkasi ir lielas objektu grupas, kas nodrošina

sarežģītu mijiedarbību.

• Funkcionalitātei var piekļūt izmantojot API.

Page 25: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Open-Closed princips

• Ietvarus var lietot oriģinālajā veidā un var arī paplašināt, lai paplašinātu tajos iebūvēto uzvedību ar jaunām iezīmēm.

• Open-Closed princips apgalvo, ka pielāgojumu klasēs, kuras manto no ietvara klasēm, nedrīkst mainīt ietvara klases uzvedību; to drīkst vienīgi paplašināt.

• “Software entities like classes, modules and functions should be open for extension, but closed for modification.” Bertrand Meyer (1988)

Page 26: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Ietvaru piemēri

• Spring Framework• The leading full-stack Java/JEE application

framework

• JUnit• A unit testing framework for the Java

• jBPM• Workflow management system based on J2EE

• Jena• A Semantic Web framework for Java

Page 27: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Kas vēl svarīgs ir Javas valodā?

• Kolekcijas (collections)

• Izņēmumi (exceptions)

• Ievade/Izvade (input/output)

• Pavedieni (threads)

Page 28: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Java 5.0 (Tiger)

• Generics

• for loops

• Annotations (Metadata)

List<String> values = new ArrayList<String>();

public void save(List<? extends PersistentEntity>);

List<String> values = getValues();for (String s: values){ ...}

Page 29: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Java 6.0 (Mustang)

• Web Services• First-class support for writing XML web service

client applications

• Java SE 6 adds new parsing and XML to Java object-mapping APIs, previously only available in Java EE

• What's New in Java SE 6 (Top 10)http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/beta2.html

Page 30: Java un OOP pamati. Ievads Nepieciešamas priekšzināšanas Java Standard Edition Objektorientēta programmēšana Pārskata lekcijas par programmēšanas valodu

Bibliogrāfija

• The Source for Java Developershttp://java.sun.com/

• Pārskats par Javuhttp://www.webkursi.lv/java-eim/de/index_java.html