350 likes | 486 Views
Denne præsentation vil sandsynligvis medføre diskussion blandt tilhørerne, hvilket vil resultere i handlingspunkter. Hvis du vil bruge PowerPoint til at holde styr på dem under præsentationen, skal du Klikke med højre museknap i Diasvisning Vælge “Referent” Vælge fanen “Handlingspunkter”
E N D
Denne præsentation vil sandsynligvis medføre diskussion blandt tilhørerne, hvilket vil resultere i handlingspunkter. Hvis du vil bruge PowerPoint til at holde styr på dem under præsentationen, skal du • Klikke med højre museknap i Diasvisning • Vælge “Referent” • Vælge fanen “Handlingspunkter” • Skrive handlingselementerne, efterhånden som de kommer frem • Klikke på OK for at slette denne boks • Derved oprettes der automatisk et dias med handlingspunkter sidst i præsentationen, hvor de punkter, du har noteret, vil stå. Hovedprojekt MII Aalborg Universitet Rørende Intelligent Udarbejdet i perioden: 5. marts til 3. juni 2004
1 Fremlæggelse af projekt • Indledning, teori (Model, Servlets mm.) • Peter • UML gennemgang • Preben • Together-oplæg • Anders • Sammenligning med eksisterende løsning • – Hans Peter • Konklusion, perspektivering, alternative løsningsforslag • Noah Cirka 12 minutter per indlæg
2 Indledning, teori (Model, Servlets mm.) • Indledning • væsentlige teorier og metoder fra PE-kurser • OOP, (OOAD) samt Client-/Server programmering. • I forhold til materiale (OOP/Client/server) mangler i projektet to primære områder: • Kommunikation via streams • Brug af interfaces
3 Teori • Java 2 Standard Edition (J2SE) • Java 2 Platform Enterprise Edition (J2EE) • Java Servlets • Java Server Pages (JSP) • Java DataBase Connectivity (JDBC) • Java 2 Micro Edition (J2ME)
Access Database MVC, Servlet, JSP med JDBC/ODBC 1..m klienter 3 2 4 1 INTERNET 4 Teori Arkitektur • 3-lags arkitektur
5 Teori Servlet import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class ClientConsume extends HttpServlet { private static final int NO_POF_PIPES = 17; private static final String CONTENT_TYPE = "text/html"; //Initialize global variables private MainWindow lnkMainWindow; private DBBoundary lnkDBBoundary; private Login lnkLogin; private HttpSession session; public void init() throws ServletException { lnkDBBoundary = new DBBoundary(); lnkMainWindow = new MainWindow(lnkDBBoundary); lnkLogin = new Login(lnkDBBoundary, lnkMainWindow); } //Process the HTTP Get request showing parametres public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //Process the HTTP Put request public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }
6 Teori Servlet (fortsat) switch (select) { case 1: //Login …. …. response.sendRedirect("ClientProduce.jsp"); break; case 2: // Sprog …. …. response.sendRedirect("ClientProduce.jsp"); break; case 3: // Beregn …. …. response.sendRedirect("ClientProduce.jsp"); break;
7 Teori JSP • JSP <%@ page import = "java.text.DecimalFormat " %> <html> <head> <title>ClientProduce</title> …. <form name="Pipe" action="/ClientConsume" method="post"> <table name="mainTable1" align="center" width="600" border="0"> <tr><td><input type=text value="<%=a[0]%>" size="8" name="temp1"></td> …. <%%> …. </form> </body>
8 Teori MVC • Model-View-Controller (MVC)
Denne præsentation vil sandsynligvis medføre diskussion blandt tilhørerne, hvilket vil resultere i handlingspunkter. Hvis du vil bruge PowerPoint til at holde styr på dem under præsentationen, skal du • Klikke med højre museknap i Diasvisning • Vælge “Referent” • Vælge fanen “Handlingspunkter” • Skrive handlingselementerne, efterhånden som de kommer frem • Klikke på OK for at slette denne boks • Derved oprettes der automatisk et dias med handlingspunkter sidst i præsentationen, hvor de punkter, du har noteret, vil stå. UML anvendt til applikationen(Unified Modeling Language) Rørende Intelligent Preben Melgaard
1 Præsentation af de anvendte diagramtyper • Deployment diagram • Use case diagram • Aktivitetsdiagram • Klassediagram • Sekvensdiagram
2 Deployment diagram • Viser den fysiske arkitektur af hardware og software i systemet
3 Use case diagram • Viser et antal aktører og deres forbindelse til use cases som systemet tilbyder • Beskrivelse af funktionalitet • Tekst eller aktivitetsdiagram • Definerer funktionelle krav til systemet
4 Aktivitetsdiagram • Viser sekventiel flow af aktiviteter • Bruges typisk til at beskrive de aktiviteter der skal til for at udføre en operation
5 Klassediagram • Associeret • Afhængige • Pakket • Viser den statiske struktur af klasser
6 Sekvensdiagram • Viser dynamisk samarbejde mellem objekter • Speciel god til at vise timing i sekvenser • Viser beskeder sendt mellem objekter • Viser tiden lodret nedad
7 Andre mulige diagramtyper • State diagram • Viser et objekts tilstande og de hændelser, som giver et tilstandsskift • Kan laves både for klasser og hele systemet • Collaboration diagram • Viser det dynamiske samarbejde mellem objekter • Ikke så gode til at vise timing • Componet diagram • Viser fysiske komponent associationer • F.eks. Kildetekstfiler, binære filer og exe-filer. • Anvendes i programmeringen
Denne præsentation vil sandsynligvis medføre diskussion blandt tilhørerne, hvilket vil resultere i handlingspunkter. Hvis du vil bruge PowerPoint til at holde styr på dem under præsentationen, skal du • Klikke med højre museknap i Diasvisning • Vælge “Referent” • Vælge fanen “Handlingspunkter” • Skrive handlingselementerne, efterhånden som de kommer frem • Klikke på OK for at slette denne boks • Derved oprettes der automatisk et dias med handlingspunkter sidst i præsentationen, hvor de punkter, du har noteret, vil stå. Together-oplæg Rørende Intelligent Anders Rieck Sørensen
1 Teknologivalg • Kontrolleren • Java (SDK/JDK) • MS-Access • SQL (JDBC/ODBC) • Præsentationen • JSP • HTML/DHTML • JavaScript • CSS
2 Udviklingsværktøjer • Together • UML • Java-klasser • JSP • Aftestning/debugning • FrontPage • HTML / DHTML / CSS / JavaScript
3 Implementeringsforløb • Første version • Java-klasserne fordelt til de enkelte gruppemedlemmer og aftestet før de blev frigivet. • Anden version • Javaklasserne blev samlet i et projekt • Konstruktørerne blev fastlagt • Login.htm og clientProcedure.jsp
4 Demonstration • Gennemgang • Diagrammerne • Editor • Kørsel
5 Opsummering • Together • UML diagrammer og implementering god sammenhæng • Fint udviklingsværktøj • God i implementering og aftestning fasen • Reducer tidsforbrug • FrontPage • God i udvikling skærmbilleder • Reducer tidsforbug • Generelt • Kun to udviklingsværktøjer
Sammenligning af .NET- og Java-applikation Rørende Intelligent Hans Peter Lybæk
1 Om applikationerne • .NET-applikationen • Programmeret i Visual Basic.Net • Findes via adressen http://www.vbdotnet.dk/ • Java-applikationen • Programmeret i Java • Findes via adressen http://www.pbdesign.dk/mii
2 Test af performance (hastighed) • Test af hastighed • Visuel test • Konkret hastighedsmåling • Demo .NET-applikation Java-applikation
3 .NET vs Java • Forskelle • .NET-applikation • Opdaterer med direkte adgang til databasen (hele siden opdateres) • 100% adskillelse af HTML og programkode (se eksempel) • Java-applikation • Rullevinduernes værdier er lagret via arrays i JavaScript, hvorved kun de aktuelle menuer loades og dermed ikke hele siden
4 Konkret hastighedsmåling • Indførelse af timestamps, når beregning starter og slutter • .NET-kode: Private Sub Calculate_heat() Dim dTime1, dTime2 As DateTime Dim tCount1, tCount2 As Integer dTime1 = Now //Here goes the calculation GetPipeDimensions() GetPipeSpecs() … dTime2 = Now tCount2 = dTime2.Subtract(dTime1).Seconds() tCount1 = dTime2.Subtract(dTime1).Milliseconds() Response.Write("Tid: " & tCount2 & " sek., " & tCount1 & " millisek.") End Sub
5 Java-applikation • Java-kode: long[] laT = new long[2]; Date timestamp = new Date(); laT[0] = timestamp.getTime(); // Start tid switch (select) { case 3: // Beregn daRes = lnkMainWindow.beregn(daT[0], daT[1], daT[2], iaD[0], daLength); session.setAttribute("result", daRes); session.setAttribute("navn", valg); Date timestamp3 = new Date(); laT[1] = timestamp3.getTime(); // Slut tid session.setAttribute("time", laT); response.sendRedirect("ClientProduce.jsp"); break;
6 Vurdering af resultater • Visuel test • Java-applikation er hurtigst til at eksekvere på klientsiden (eksempelvis skift af rullevinduer) • Java-applikation vurderes til at være lidt hurtigere til at skifte sprog (der er ikke målt tid på dette) • De to applikationer er cirka lige hurtige til at udføre en beregning • Konkret hastighedsmåling • Beregninger: • .NET: 0sek, 430 millisekunder • Java: 0sek, 140 millisekunder • Sprog • .NET: 0sek, 15 millisekunder • Java: 0sek, 32 millisekunder
7 Eksempel på databaseopslag i .NET • Klasse clsDimensions Imports System.Data Imports System.Data.OleDb Public Class clsDimensions Inherits System.Web.UI.Page Dim i As Integer Dim pDim(16) As Integer Dim strCn As String Public Function GetDimensions() As Integer() strCn = "Provider=Microsoft.jet.oledb.4.0;Data Source=" & Server.MapPath("fluids.MDB") & ";" Dim strSql As String = "Select dimension FROM material_spec ORDER BY id ASC" Dim objConnection As New OleDbConnection(strCn) Dim objCommand As New OleDbCommand(strSql, objConnection) Dim objDataReader As OleDbDataReader objConnection.Open() objDataReader = objCommand.ExecuteReader() i = 0 Do While objDataReader.Read() = True pDim(i) = objDataReader("dimension") i += 1 Loop objDataReader.Close() objConnection.Close() Return pDim End Function End Class
8 Eksempel på databaseopslag i Java • Java: public double[] GetDimensions(){ double[] dimension=new double[18]; int taeller = 0; String strSql = "SELECT Dimension FROM material_spec ORDER BY id ASC"; try{ Statement statement1 = connectionfluids.createStatement(); ResultSet res1 = statement1.executeQuery(strSql); while (res1.next()){ dimension[taeller] = res1.getInt("Dimension"); taeller++; } }catch (Exception fagex){System.out.println("kunne ikke finde dimensionen "+fagex);} return dimension; }
9 .NET-kode • Eksempel • Man indtaster en tekst og det indtastede returneres i en label <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="GeorgFischer.WebForm1"%> <!DOCTYPEHTMLPUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <title>WebForm1</title> <metaname="GENERATOR"content="Microsoft Visual Studio.NET 7.0"> <metaname="CODE_LANGUAGE"content="Visual Basic 7.0"> <metaname=vs_defaultClientScriptcontent="JavaScript"> <metaname=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5"> </HEAD> <body> <formid="Form1"method="post"runat="server"> <asp:Labelid=Label1runat="server">Enter some text:</asp:Label> <asp:TextBoxid=TextBox1runat="server"></asp:TextBox> <asp:Buttonid=Button1runat="server"Text="Click me"></asp:Button> <br> <asp:Labelid=Label2runat="server">You entered:</asp:Label> <asp:Labelid=Label3runat="server">Label</asp:Label> </form> </body> </HTML>
10 Kodefil (Webform1.aspx.vb) • Dette er kodefilen, der anvendes af aspx-filen PublicClass WebForm1 Inherits System.Web.UI.Page ProtectedWithEvents Label1 As System.Web.UI.WebControls.Label ProtectedWithEvents TextBox1 As System.Web.UI.WebControls.TextBox ProtectedWithEvents Button1 As System.Web.UI.WebControls.Button ProtectedWithEvents Label2 As System.Web.UI.WebControls.Label ProtectedWithEvents Label3 As System.Web.UI.WebControls.Label PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Label3.Text = TextBox1.text EndSub EndClass