You are on page 1of 27

Objektinis programavimas

/JAVA/

Prof. Rimantas Vaicekauskas,

2022-23 m.m. rudens/pavasario


semestrai
Objekt. programavimas /JAVA/

• Informacija pateikiama e.mokymų aplinkoje.


(Archyvinė) svetainė: http://mif.vu.lt/~rvck/op/
• Programų sistemos / Informatika / Bioinformatika 5 kr.
dalykas, egzaminas
• Egzamino balas (gali keistis sem. eig.) formuojamas
taip: 4 (egzamino testas raštu) + 6 (lab. darbų įvertis)
• Atsiskaitymo/lankomumo reikalavimai: suminis
semestro lab. darbų įvertinimas pasibaigus
paskutiniajam lab. d. užsiėmimui ne mažesnis negu
50% (3 balai)
• Aktyvus dalyvavimas paskaitose premijuojamas
Kurso paskirtis
• Įsisavinti objektiškai orientuoto
programavimo principus programavimo
kalbos JAVA pagrindu.
• Susipažinti su objektiškai orientuota
analize ir projektavimu, išreiškiant
projektinius sprendimus UML žymėjimais.
• Žinoti ir sugebėti taikyti pagrindinius
projektavimo šablonus (design patterns)
Literatūros nuorodos
• Bruce Eckel. Thinking in Java, 3rd/4th Edition,
2003 (t.p. online)
• H.M.Deitel, P.J.Deitel. Java: how to program 4th
edition. Prentice Hall, 2003 (9-th ed. 2011)
• C.Horstmann. Computing concepts with Java Essentials 3 rd edition,
John Willey, 2003.
• L.Lemay, R.Cadenhead. Sams teach yourself Java 1.2 in 21 days,
1998 Sams Publishing
• P.Naughton. The Java handbook. 1996, McGraw-Hill.
• D.Flanagan. Java in a Nutshell, Second edition, 1997.
• R.Belevičius. Java technologijos. Mokomoji knyga.
Technika. 2005
Išplėstiniams skaitymams
• Grady Booch. Object-Oriented analysis and Design with
applications. Second edition.
• Bruce Eckel. Thinking in Patterns with Java (online)
• Craig Larman. Applying UML and Patterns: An
Introduction to Object-Oriented Analysis and Design and
the Unified Process (2nd Edition). Prentice Hall.
• Bernd Bruegge, Allen H. Dutoit. Object-Oriented
Software Engineering: Using UML, Patterns and Java,
Second Edition
Java Online šaltiniai
• http://www.oracle.com/technetwork/java/index.html
• http://docs.oracle.com/javase/8/docs/api/
• http://docs.oracle.com/javase/tutorial/
• Java language specification:
https://docs.oracle.com/javase/specs/
• MIF kolegų (a.a.) A. Basčio bei V.Stakėno
Java progr. kalbos kursų medžiaga.
Kodėl OP
• Programinė įranga sudėtinga
• Tam, kad supaprastintį visumą –
reikalingas skaidymas į dalis
• Procedūrinio programavimo paradigma –
skaidyti programą į procedūras.
• Trūkumas … d u o m e n y s ?!
• Objektiškai orientuoto program. idėja –
apjungti procedūras su duomenimis.
Pagrindinės objektinio
programavimo (OOP) sąvokos
• Objektas – vienareikšmiškai identifikuojamas,
savistovis programinis darinys, turintis būseną ir
elgesį.
• Pranešimas - komunikacijos(bendravimo) tarp
objektų būdas (kitaip vad.- metodu).
• Klasė - prototipas, apibrėžiantis tam tikros
rūšies objektų ypatybes. Kiekvienas konkretus
objektas yra kurios nors klasės egzempliorius
(instance).
OOP sąvokos (2)
• Inkapsuliacija (encapsulation) - objekto elgesio ir
būsenos kaip visumos traktavimas. Susijęs su objekto
realizacijos paslėpimu, leidžiant manipuliuoti objektu tik
naudojant viešąją sąsają (interface).
• Klasių hierarchija, paveldėjimas- klasių sistemos
organizavimo būdas, specializuojant elgesį išvestinėse
klasėse. Įgalina programinių sistemų pakartotinį
panaudojamumą.
• Polimorfizmas – objektų sugebėjimas reaguoti į metodo
iškvietimą priklausomai nuo objekto klasės.
Realizuojamas virtualiųjų metodų kvietiniais.
OOP sąvokos (3)
• OOP: tai programavimo metodologija,
– kai programa sukomponuojama iš objektų,
– kiekvienas objektas priklauso tam tikrai klasei,
– klasės sudaro paveldėjimo hierarchiją (Pagal Booch).

• OOP susijęs taip pat su OO analize ir projektavimu.

• OO programavimas realizuojamas naudojant OO


principus įgyvendinčiąja programavimo kalba. Iš esmės
daugelis šiuolaikinių programavimo kalbų leidžia OO
išplėtinius.
Programavimo kalbos
• Pirmosios: Fortran, Algol, Cobol,Lisp,PL/1
Pascal – 1954 –1970
• Objektinės (duomenu abstrakcija + klasės),
objektiškai-orientuotos( paveldėjimas ir
polimorfizmas).
– Simula (1960), Simula 67 - Algol'o idejos +
paveldėjimas + inkapsuliacija.
– Smalltalk (1972) - pilnai OO kalba (netgi skaičiai -
objektai) kartu su programavimo aplinka.
– Ada (1978)
Kalbos (2)
• C++ (1983) Kilo iš "C" [Kernighan, 1978] Bendro
pobūdžio progr. kalba. Pasirodė (pavadinta)
1983. Bendro pobūdžio progr. kalba.
– Geresnė negu C.
– Įgalina duomenų abstrakciją.
– Įgalina OO programavimą.
– Įgalina apibendrintą programavimą (templates).
– Įgalina ypatingų situacijų mechanizmo (exception)
panaudojimą.
– Standartizuota 1998 m., ANSI/ISO 14882.
Kalbos (3)
• Object Pascal (1986),
• Java (1995),
• C# ("C sharp."), Microsoft, 2000
• “Skriptinės” kalbos: Python, Perl, Ruby, …
Java programavimo kalba
• objektiškai orientuota, bet paprastesnė nei C++
• interpretuojama,
• architektektūriškai neutrali,
• dinaminė,
• saugi, daugiagijė,
• turinti turtingą klasių biblioteka
• turinti išvystytus IDE (Eclipse, NetBeans, IntelliJ
IDEA).
• java kalba nuolatos tobulinama (šiuo metu aktuali laida
– 17), kalbos požiūriu pakanka 8 ver. galimybių.
Paprasčiausia Java programa
/**
Hello console
@author anonymous
*/
public class HelloConsole {
/** Main function.
@param args - command line arguments
@return Nothing
*/
public static void main(String[] args) {
// System - class name (java.lang.System)
// out statical field being java.io.PrintStream
System.out.println("Hello, world");
}
}
Programos vykdymo etapai
• Kompiliavimas komandinės eilutės
aplinkoje (sukuriamas HelloConsole.class
failas) :
javac HelloConsole.java

• Vykdymas komandinės eilutės aplinkoje:


java HelloConsole
Java platforma
OOP anomalijos
// Normalus kodas
print(a + b)
// "Išpūstas kodas"
am = new math.ArithmeticManager()
opA = new math.Operand((float) a)
opB = new math.Operand((float) b)
am.addOperand(opA)
am.addOperand(opB)
am.operator = new math.operators.Addition()
am.executeMathOperation()
system.io.output.print(am.mathOperationResult())

Pagal: http://reocities.com/tablizer/oopbad.htm
Progr. kalbų ateitis (1)
C# programa:

namespace MyNamespace
{
public class MyClass
{
public static void Main()
{
Console.WriteLine("Hello, C#");
}
}
}

Pagal: http://www.charlespetzold.com/etc/CSAML.html
Progr. kalbų ateitis (2)
C# Application Markup Language or CSAML

<CsamlFile xmlns="http://schemas.microsoft.com/winfx/2006/xaml/csaml"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<NamespaceDeclaration Identifier="MyNamespace">
<ClassDeclaration Identifier="MyClass"
Access="Public">
<MethodDeclaration Identifier="Main"
Access="Public"
Modifier="Static"
ReturnType="{x:Type void}">
<InvocationExpression
MemberAccess="System.Console.WriteLine">
<InvocationExpression.ArgumentList>
<Literal Type="{x:Type string}"
Value="Hello, CSAML! ">
</InvocationExpression.ArgumentList>
</InvocationExpression>
</MethodDeclaration>
</ClassDeclaration>
</NamespaceDeclaration>
Pagal: http://www.charlespetzold.com/etc/CSAML.html
</CsamlFile>
Vieno iš ankstesnių metų egzamino
laikymo statistika

Testas 0-3 balai

Atviras klausimas, pratimas


0-1 balas
Įvado pabaiga

You might also like