240 likes | 274 Views
Object-Oriented Software. How does it differ from procedural? How is it similar to procedural? Why has it become so popular? Does it replace or supplement procedural? What is the point? Why bother? Is it here to stay or gone tomorrow?. An Object-Oriented Program (OOP).
E N D
Object-Oriented Software • How does it differ from procedural? • How is it similar to procedural? • Why has it become so popular? • Does it replace or supplement procedural? • What is the point? • Why bother? • Is it here to stay or gone tomorrow?
An Object-Oriented Program (OOP) • Is composed of a collection of individual units called objects which package data and functionality together, rather than of lists of instructions which act on external data. • Each object is capable of: • receiving calls from other objects to run methods, • executing its own methods, and • sending calls to run methods in other objects.
What is an Object in OOP? • An object is a softwareconstruct that bundles together data (state) and function (behavior) which, taken together, represent an abstraction of a thing, event, service, etc. • An object is an instance of a class. A class models a group of things, events, services, etc.; an object models a particular member of that group.
What is in a Class (or Object)? • A class contains attributes and methods. • Attributes describe state; methods perform actions. • Attributes may be Java primitives, or objects (strings, dates, arrays, other objects, etc). • Methods may be instance methods, which only work when the class is instantiated as an object, or static methods, which may be used independently of class instantiation.
Objected-Oriented vs. Procedural • Both types of language use structured programming logic; the logical architecture of a Java method will resemble that of an ILE RPG procedure. • The main difference is macro-architecture: • With OO, logic and data reside together in objects • OO design focuses on object relationships and interactions rather than code block relationships
Java Source and Object Files • Compilation Units (.java files) • With a main method • Without a main method • Java Bytecode (.class files) • Compilation-level class files • Nested class files
Glazers Interfaces Package • What is a Java package? • com.glazers.interfaces package • Five compilation units: • GetOpenPO – import open POs • GetInterCo – import intercompany transfers • GetOpenCO – import open customer orders • Function – class of static methods • LogMaker – class to make log object
Examples of Java Files Function.java Function.class GetOpenPO.java GetOpenPO.class ImportOpenPO.class
More Examples of Java Files LogMaker.java LogMaker.class LogMaker$PrintEnding.class LogMaker$PrintHeading.class LogMaker$PrintLine.class LogMaker$PrintMethods.class
Integration ETL Program Structure • Five Basic Steps • Open log file and database connections • Extract the result set from source system • Transform any data items • Load the data batch in target system • Close log file and database connections
What are the Objects? • Log Object • Database Connection Objects • SQL Statement Objects • Result Set Objects • BatchInsert Objects • String and Date Objects
The Code Environment package com.glazers.interfaces; import java.io.*; import java.sql.*; import java.util.*; import com.ibm.as400.access.*; import com.javaranch.common.GDate; import com.javaranch.common.JDate; import com.glazers.interfaces.*;
GetOpenPO Class and main public class GetOpenPO { public static void main(String args[]) { // Create an ImportOpenPO object ImportOpenPO impObj = new ImportOpenPO();
Full main method // Create an ImportOpenPO object ImportOpenPO impObj = new ImportOpenPO(); // Call the mainLine and receive its return code System.exit(impObj.mainLine(args[0],args[1], args[2],args[3],args[4],args[5]));
Comments // The main method for class GetOpenPO takes six parameters: // 1) Log File Directory Path (ex. Home/JavaApps/Manu) // 2) Oracle Database Name (SCPODEV, SCPOTEST, etc.) // 3) Oracle UserID // 4) Oracle Password // 5) AS/400 UserID // 6) AS/400 Password // After creating an ImportOpenPO object, these parameters are // passed to its mainLine method.
ImportOpenPO Class & mainLine class ImportOpenPO { public int mainLine (String dirPath, String oraSID, String oraUser, String oraPwd, String as400User, String as400Pwd) {
ImportOpenPO Code Structure • try [outer try/catch block] [start the log] • try [inner try/catch block] • open database connections • extract result set from source system • perform any data transformations • load data batch into target system • close database connections • catch [catch inner exceptions] • catch [catch outer exceptions]
Outer try statements try { // Create LogMaker object and begin logging LogMaker log = new LogMaker(dirPath,"OpenPO.log"); log.printHeading("Open PO Import Log"); // If run interactively, display running message System.out.println ("Open PO Import is running");
Inner try block job steps • Open database connections • Create Sql statement objects • Extract the result set • Loop throught the result set: • Extract the data items from result set object • Perform any data transformation • Set the data into the batchInsert object • Check error table for any rejects • If any rejects, print rejects to log • Close result sets and database connections
Connect to the iSeries // Register the AS400 JDBC Driver DriverManager.registerDriver(new AS400JDBCDriver()); // Create a properties object and connect to the database Properties as400Prop = Function.getAS400Prop(as400User,as400Pwd); conn400 = DriverManager.getConnection ("jdbc:as400://GLAZERS",as400Prop);
Connect to Oracle // Load the Oracle JDBC driver Class.forName("oracle.jdbc.driver.OracleDriver"); // Get the Oracle connection string String oraConnStr = Function.getOraConnStr(oraSID,oraUser,oraPwd); // Connect to the database server connOra = DriverManager.getConnection(oraConnStr); connOra.setAutoCommit(false);
Extracting the Result Set // Get the SQL statement to assign to the stmt400 sqlQuery string String sqlQuery = getSQL(); // Create a Statement object (stmt400) stmt400 = conn400.createStatement(); // Execute the SQL Select and obtain the ResultSet object (rs) rs = stmt400.executeQuery(sqlQuery);
The Batch Insert Prepared Statement // Construct the Insert Prepared Statement before entering the loop PreparedStatement sqlInsert = connOra.prepareStatement( "INSERT INTO INTINS_SCHEDRCPTS " + "(item, loc, scheddate, qty, expdate, ponum, " + "startdate, dateship, masterloadid, loadid," + "integration_stamp, integration_jobid)" + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?)");