SlideShare una empresa de Scribd logo
1 de 29
An Introduction to
Programming
by
John Mulhall
For
Coder Forge Meetup Group
johnmhll:~ johnmlhll$ whoami
johnmlhll
• Whoami? 15 years in Process Management and Backoffice
• Transitioned to Software after a Cert in Project
Management in 2014. First ever piece of coding in Sept
2014
• Can code (apps/scripts) in Java, C#, Node.js/Javascript,
Python, CSS/HTML
• Graduated Level 8 year long Course in Advanced Project
Management (2014) with 71% and Software & Cloud
Technologies in 2015 with 79%
• Follow me on on LinkedIn, Google+ and Twitter @johnmlhll
• Contact @ johnmlhll@yahoo.com
Agenda
• Definitions/Common Software Terms
• Object Orientated Programming (OOP)
• OOP V Functional Programming
• Software Application Lifecycle
• Programming Tips
The States of a Programmer
2% of the time : the other 98%
Definitions/Common Software Terms
Letsexploresomeof thecommonterms…
• Software Developer V Software Engineer – A Software Developer develops
software whereas a Software Engineering applies engineering principles (e.g.
OOP) to software creation. Not all Software Engineers are Software Developers
and vice versa.
• OOP – Object Orientated Programming (OOP) refers to a type of computer
programming (software design) in which programmers define not only the data
type of a data structure, but also the types of operations (functions) that can be
applied to the data structure. (creds: Webopedia.com) Objects refer to real
world component objects in the design logic under OOP. E.g. Java, C#, Python,
Javascript
• Functional Programming – It is a programming paradigm that preserves
immutability in the mathematical design of objects, behaviors and programming
flows. It is a pure processing design paradigm. Think railway tracks delivering
trains from station a to b to c to its destination d. The stations are objects and
the train is the subject data/query process. E.g. Pascal, Scala
• Single Inheritance – A design architecture that allows inheritance from a single
base class. It’s considered more structured and safer for larger projects. E.g. Java,
C#
• Multiple Inheritance – An OOP design architecture that solves the “diamond
shape problem”. Complexity is increased and error likelihood given the inherited
multiple base class relationships an object can have. For discussion: Javascript,
Expandos & Mixins… E.g. Python, C++
Definitions/Common
Software Terms
• RDBMS V DBMS – Relational Database Management System is a
database design concept based on tables, schemas, primary keys and
foreign keys driving row based data management (ACID transactions =
Atomic, Consistent, Isolation, Durability). Think MySQL or SQL-Server
databases as RDMBS. Data Base Management Systems refers to a
collection of tables, databases and schemas without an existing storage
infrastructure. Think RDBMS/NoSQL database in the one storage
solution as DBMS.
• SQL V NoSQL – SQL is a database manipulation language for RDBMS
allowing data to be directly queried against the database tables where
NoSQL (aka. Not Only SQL) is a database management system that is a
schema flexible, columnar driven database management system that
ID’s data by tablet, column, timestamps and row key in some cases
(BASE transactions = Basically Available, Soft State, Eventual
Consistency). Think “Big Data” Key Value Storage databases being
designed in the BASE paradigm
• NFS V DFS – Native File Systems are present on the machine or server
on which you base your operation on. Distributed file system operates
from a single machine across a number of machines called nodes to
make up a cluster. The latter increases processing and storage power
across several nodes.
Definitions/Common Software
Terms
• Normal Forms 1 – 7 – These are database table design principles for
RDBMS that accommodate the one to one, one to many and many
to many relationships to present clear, single data piece per field
data storage. The design differences range from Normal Form 1
through to 7.
• Separation of Concerns – Application Software Design requires
separation of concerns to ensure that if something goes one in in
part, it will not adversely affect the other parts of the application.
E.G. if data input from application fails, existing data stored will not
be affected. Also, if business rules (software layers) change for
processing customer data flows on the application layer, the
underlying storage layer will not be affected
• Strongly Typed – Languages that support defined data typing and
compile only if explicit data type rules are defined. E.g. Java, C#
• Weakly/Dynamically/Loosely Typed – Languages that support
implicit data type conversions. E.g. Javascript, Python
Definitions/Common
Software Terms
• Reusable Code – An engineering principle that requires code to be
engineered into objects that can be reused as they are originally
designed
• Modular Code – An engineering principle that requires code to be
engineered into objects that can be functional as a unit or module.
Think assigning a behaviour to a function or method.
• Readable Code – A principle that requires code to be written in
convention e.g. “public static String iLoveCode(java); {}” and in a
manner that tells a story about what the code is doing. e.g. Incorrect
practice: “public static String x(y); {}”
• Bad Coding Practice - Spaghetti Code – Code that is devoid of good
coding practice, is not readable, near modular, unusable and cannot
be reused due to its lack of coherence and structure. Beware of
“goto” statements.
Definitions/Common Software
Terms
• Base Classes – This is the base class in OOP that has the base
methods associated with the class object. These methods (objects)
maybe implemented or could be detailed in the case of an abstract
class. All base class methods are inheritable unless they are termed
“final”. E.g. “public static final String iLoveCode(java); {}” . In such a
case, the method is not available to derived/concrete classes.
• Derived/Concrete Classes – These are classes associated with a base
class by inheritance. The derived class has the inheritable base class
objects available to it and under OPP principles will have an object
connection to the base class. E.g. Derived Class “public class Horse
extends Animal {}” inherits from “public class Animal {}” (a Horse Is-
A Animal)
• Static Classes – The same as a normal case making all its members
available to all classes with access to it. However static classes
cannot have any instantiation. The “new” keyword cannot be used.
• Final Classes – These are classes that cannot be inherited/extended
Definitions/Common
Software Terms
• Abstract Classes – They a first step at defining non
implementing class level objects that define members
(methods and/or properties) but don’t implement them. They
instead make them available for implementation in
derived/concrete sub classes.
• Interfaces – They are similar to Abstract Classes but are not
class level objects. They implement class level objects by
ensuring detailed members in the interface are implemented
in the associated classes.
• Objects – They are code wrapped in a header that has name,
access levels, arguments and/or other elements like data type
and/or inheritability associated with the code implemented
within the class. Objects can be properties, variables,
methods, functions, classes, etc.
Definitions/Common
Software Terms
• Methods – objects within a class that define a behaviour
within the program
• Functions – objects that define a specific behaviour within a
program
• Instance Variables – variables that belong to the instantiation
of an object
• Static Variables – variables are are available to all classes but
not available to instances of objects within the program
• Class Variables – variables that belong to a class rather then a
instance of a class
• Local Variables – variables that are declared and accessible
within a method or a function object only
Definitions/Common Software
Terms
• Instance – is the “new” key word creating an object from a
class or number of classes that performs a range of
programmed behaviours
• Properties – the assigning of object properties to a reusable
variable field including getter and setter properties to be
assigned to the property. E.g. “public int myProperty {get;
set;}” (c# example)
• Elements – the elements of a given object (class/methods)
• Operators – programmatic symbols that perform specific
functions, which are most commonly mathematical
calculations (normally) e.g. “+-”,”%*/”…. Non mathsey
examples…. ”instanceof”, “++”, “+=”
Object Orientated
Programming (OOP)
• Object Orientated Programming refers to the architecture of
coding around real world objects that are related to each
other by a “Has-A” or “Is-A” relationship. They are considered
to be be relationally linked as a result creating a programming
structure based on real world objects that relate to each other
within the progams use case.
• E.G. – Program Car:
• Car =>
• Engine => Wheels => CabFittings => Windows => Seats
• Next level of derived class objects in the OOP design structure
Object Orientated
Programming Chart (OOP)
Animal
Fish
Trout Shark
Dolphin Mammal
Dog Horse
OOP Explained - A.P.I.E.
• Abstraction – The concept of creating a layer of functionality that is visually
separated from the underlying code which supports it. It creates in essence an
outside view of the object where it uses its elements to execute a set of
behaviours but cannot see what those elements in the underlying code are. E.g.
“Kibi” is a big data tool that is separate from Kibana but developed from it. It’s a
new layer of functionality on top of the original product without seeing the
original product.
• Polymorphism – The use of a method in subclasses for different purposes e.g.
“public abstract class Surgeon{}” has a method “public void cut();” Surgeon class
has two derived classes “public class Surgery{}” and “public class Barber{}” that
have inherited the method “public void cut();”. Surgery class implements the
method to cut into patients in surgery and Baber class implements the method
to cut the surgeons hair.
• Inheritance – The making available of methods and properties in a class to a
class at is derived from it.
• Encapsulation - When the members of a class are only visible to the other
members of a class, this is called encapsulation. Encapsulation leads to “Data
Hiding” (i.e. think method calls visible in main class/method & method
implementations hidden in a class file)
Abstraction
• Very useful for creating new “outside in” functionality on top
of existing products/layers. e.g. Meteor.js templates {{{text}}}
are a layer of abstraction on top of Meteor.js.
• The outside in approach allows objects to be abstracted from
underlying software and used in a manner that does not
reveal their distinct behaviour e.g. any SaaS Product online
such as pic monkey
• Abstraction increases efficiency of software whilst hiding the
underlying software processes that support it.
Polymorphism
• Used to streamline coding, increase efficiency and prevent
duplication of code. e.g. method cut() cut’s hair in barber class when
overridden and cuts into patients in surgeon class when overridden
there but the basic attributes of the method header cut() with
implementation for a blade and cutting action is present in the base
class version of the method that they both inherit from
• Polymorphism also enables good inheritance structure whilst
increasing functionality of the code. It also works well when a single
element needs to be implemented in a number of classes via an
interface:
• Interface iCut()
• {
• Public void cut():
• }
• //can be deployed in all classes that implement iCut();
Inheritance
• Is-A Relationship – “An Salmon Is-A Fish”
• Has-A Relationship – “A Car Has-A Engine”
• Class Hierarchies:
• Base Class => Abstract Classes =>
• => Derived Classes=> Interfaces
• Provides Access to Methods in Super/Base Classes
• Instance Members of Classes V Class Members
• Instance Members/Methods good for mutable behaviours
• Class Members /Methods good for immutable behaviours
Encapsulation
• Encapsulation is about protecting attributes (variables and/or
methods) from mutating over many objects or process cycles.
• It basically wraps an attribute in a public read only assessor
attributes (basically calls (gets) the variable/method) so the
private method hidden is not changed in the resulting process.
The core variable is basically encapsulated in a getMethod() or
get; call to ensure it does not mutate.
• This is a key feature in the singleton design pattern where a
private static attribute is called by a public static attribute and
provided to a single class instance.
Demo
• Lets explore APIE….
OOP V Functional
Programming
• Immutable Functional Programming V Mutable OOP
• Design of OOP more for real world content housing processes.
An application has weather, calendar and contacts
functionality with many API calls, sub classing of distinct sub
functionalities in there areas
• Design of Functional more for real world processing of
content. Process for data is
• a) module data ngestion
• B) data transformation using set criteria for standard file format
• C) Data analysis and processing of data into a dashboard
• Functional has less ‘moving parts’ then OOP
Software Application Lifecycle
Software Application Lifecycle
• Common Project Management Methodologies:
• Agile
• Waterfall
• A little of both…
Programming Tips
• Pomadora Technique – break every 35 mins for 2-5 minutes
• Read from Top Down – code compiles from top down
• Google is your friend - “issue-year-language”
• Breakpoints - Step Through/Step Overs
• Unit tests – test key assertions in your code to show
behaviours so you know how if its progressing as expected
• Inverted Recruiting Principle – 95% of All Junior Software
Developers/Engineers are recruited by personal networks
where 95% of all Junior Software Developers/Engineers rely
on newspapers and recruiters in the search for employment
• Zombization - Put the laptop away from time to time and go
talk to people
Debugging – Reading
stack_trace
• Read from top down, identify the error as it progresses
through the stack
• Know your exceptions/what they mean and how they relate to
each other
• Code to allow checked exception to be caught
• E.g try {}
• Catch (Exception e){}
Stack Trace, Lets Practice Java
Now lets do a Python stack
trace
Now for the hard one (Data Science
Studio | DSS) Python layer on Java
Summary
• Write Clean Code
• Stick to good coding principles of modular, readable, useable
code that performs a single testable behaviour per object
• OOP for complexity
• Functional Programming paradigm for a linear data type
processing challenge
• Don’t settle for 90% done, you wont get hired. 100% Always
• Continuous improvement, never stop learning
• Network as much as you can to build a network that will
support your career path and ambitions
• Build your portfolio and get it out there, its key to success
• Know how to debug your code, get help, take breaks and
never give up!

Más contenido relacionado

La actualidad más candente

The relational data model part[1]
The relational data model part[1]The relational data model part[1]
The relational data model part[1]Bashir Rezaie
 
Database : Relational Data Model
Database : Relational Data ModelDatabase : Relational Data Model
Database : Relational Data ModelSmriti Jain
 
Chapter 6 relational data model and relational
Chapter  6  relational data model and relationalChapter  6  relational data model and relational
Chapter 6 relational data model and relationalJafar Nesargi
 
Chapter 6 relational data model and relational
Chapter  6  relational data model and relationalChapter  6  relational data model and relational
Chapter 6 relational data model and relationalJafar Nesargi
 
Chapter 2 Relational Data Model-part 3
Chapter 2 Relational Data Model-part 3Chapter 2 Relational Data Model-part 3
Chapter 2 Relational Data Model-part 3Eddyzulham Mahluzydde
 
introduction of database in DBMS
introduction of database in DBMSintroduction of database in DBMS
introduction of database in DBMSAbhishekRajpoot8
 
Relational Data Model Introduction
Relational Data Model IntroductionRelational Data Model Introduction
Relational Data Model IntroductionNishant Munjal
 
Database Systems - Normalization of Relations(Chapter 4/3)
Database Systems - Normalization of Relations(Chapter 4/3)Database Systems - Normalization of Relations(Chapter 4/3)
Database Systems - Normalization of Relations(Chapter 4/3)Vidyasagar Mundroy
 
The Relational Data Model and Relational Database Constraints Ch5 (Navathe 4t...
The Relational Data Model and Relational Database Constraints Ch5 (Navathe 4t...The Relational Data Model and Relational Database Constraints Ch5 (Navathe 4t...
The Relational Data Model and Relational Database Constraints Ch5 (Navathe 4t...Raj vardhan
 
Dbms ii mca-ch3-er-model-2013
Dbms ii mca-ch3-er-model-2013Dbms ii mca-ch3-er-model-2013
Dbms ii mca-ch3-er-model-2013Prosanta Ghosh
 
Normalization
NormalizationNormalization
Normalizationochesing
 
Lecture 07 relational database management system
Lecture 07 relational database management systemLecture 07 relational database management system
Lecture 07 relational database management systememailharmeet
 
Chapter 2 Relational Data Model-part1
Chapter 2 Relational Data Model-part1Chapter 2 Relational Data Model-part1
Chapter 2 Relational Data Model-part1Eddyzulham Mahluzydde
 
Database Systems - Relational Data Model (Chapter 2)
Database Systems - Relational Data Model (Chapter 2)Database Systems - Relational Data Model (Chapter 2)
Database Systems - Relational Data Model (Chapter 2)Vidyasagar Mundroy
 
Chapter 7 relation database language
Chapter 7 relation database languageChapter 7 relation database language
Chapter 7 relation database languageJafar Nesargi
 

La actualidad más candente (20)

The relational data model part[1]
The relational data model part[1]The relational data model part[1]
The relational data model part[1]
 
Database : Relational Data Model
Database : Relational Data ModelDatabase : Relational Data Model
Database : Relational Data Model
 
Chapter 6 relational data model and relational
Chapter  6  relational data model and relationalChapter  6  relational data model and relational
Chapter 6 relational data model and relational
 
Denormalization
DenormalizationDenormalization
Denormalization
 
Chapter 6 relational data model and relational
Chapter  6  relational data model and relationalChapter  6  relational data model and relational
Chapter 6 relational data model and relational
 
ch6
ch6ch6
ch6
 
Chapter 2 Relational Data Model-part 3
Chapter 2 Relational Data Model-part 3Chapter 2 Relational Data Model-part 3
Chapter 2 Relational Data Model-part 3
 
introduction of database in DBMS
introduction of database in DBMSintroduction of database in DBMS
introduction of database in DBMS
 
Relational Data Model Introduction
Relational Data Model IntroductionRelational Data Model Introduction
Relational Data Model Introduction
 
Database Systems - Normalization of Relations(Chapter 4/3)
Database Systems - Normalization of Relations(Chapter 4/3)Database Systems - Normalization of Relations(Chapter 4/3)
Database Systems - Normalization of Relations(Chapter 4/3)
 
The Relational Data Model and Relational Database Constraints Ch5 (Navathe 4t...
The Relational Data Model and Relational Database Constraints Ch5 (Navathe 4t...The Relational Data Model and Relational Database Constraints Ch5 (Navathe 4t...
The Relational Data Model and Relational Database Constraints Ch5 (Navathe 4t...
 
Dbms relational data model and sql queries
Dbms relational data model and sql queries Dbms relational data model and sql queries
Dbms relational data model and sql queries
 
Dbms ii mca-ch3-er-model-2013
Dbms ii mca-ch3-er-model-2013Dbms ii mca-ch3-er-model-2013
Dbms ii mca-ch3-er-model-2013
 
Relational model
Relational modelRelational model
Relational model
 
ch14
ch14ch14
ch14
 
Normalization
NormalizationNormalization
Normalization
 
Lecture 07 relational database management system
Lecture 07 relational database management systemLecture 07 relational database management system
Lecture 07 relational database management system
 
Chapter 2 Relational Data Model-part1
Chapter 2 Relational Data Model-part1Chapter 2 Relational Data Model-part1
Chapter 2 Relational Data Model-part1
 
Database Systems - Relational Data Model (Chapter 2)
Database Systems - Relational Data Model (Chapter 2)Database Systems - Relational Data Model (Chapter 2)
Database Systems - Relational Data Model (Chapter 2)
 
Chapter 7 relation database language
Chapter 7 relation database languageChapter 7 relation database language
Chapter 7 relation database language
 

Destacado

Relational database management system (rdbms) i
Relational database management system (rdbms) iRelational database management system (rdbms) i
Relational database management system (rdbms) iRavinder Kamboj
 
Introduction to RDBMS
Introduction to RDBMSIntroduction to RDBMS
Introduction to RDBMSSarmad Ali
 
4 the relational data model and relational database constraints
4 the relational data model and relational database constraints4 the relational data model and relational database constraints
4 the relational data model and relational database constraintsKumar
 
3. Relational Models in DBMS
3. Relational Models in DBMS3. Relational Models in DBMS
3. Relational Models in DBMSkoolkampus
 
Urinary system embryology
Urinary system embryologyUrinary system embryology
Urinary system embryologyishtiaqqazi
 
Cardinality and participation constraints
Cardinality and participation constraintsCardinality and participation constraints
Cardinality and participation constraintsNikhil Deswal
 
14. Query Optimization in DBMS
14. Query Optimization in DBMS14. Query Optimization in DBMS
14. Query Optimization in DBMSkoolkampus
 
Rdbms
RdbmsRdbms
Rdbmsrdbms
 

Destacado (10)

Rdbms
RdbmsRdbms
Rdbms
 
Relational database management system (rdbms) i
Relational database management system (rdbms) iRelational database management system (rdbms) i
Relational database management system (rdbms) i
 
Introduction to RDBMS
Introduction to RDBMSIntroduction to RDBMS
Introduction to RDBMS
 
4 the relational data model and relational database constraints
4 the relational data model and relational database constraints4 the relational data model and relational database constraints
4 the relational data model and relational database constraints
 
3. Relational Models in DBMS
3. Relational Models in DBMS3. Relational Models in DBMS
3. Relational Models in DBMS
 
Urinary system embryology
Urinary system embryologyUrinary system embryology
Urinary system embryology
 
Cardinality and participation constraints
Cardinality and participation constraintsCardinality and participation constraints
Cardinality and participation constraints
 
RDBMS.ppt
RDBMS.pptRDBMS.ppt
RDBMS.ppt
 
14. Query Optimization in DBMS
14. Query Optimization in DBMS14. Query Optimization in DBMS
14. Query Optimization in DBMS
 
Rdbms
RdbmsRdbms
Rdbms
 

Similar a An Introduction to Programming Fundamentals

Practical OOP In Java
Practical OOP In JavaPractical OOP In Java
Practical OOP In Javawiradikusuma
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptAliyaJav
 
Class notes(week 2) on basic concepts of oop-2
Class notes(week 2) on basic concepts of oop-2Class notes(week 2) on basic concepts of oop-2
Class notes(week 2) on basic concepts of oop-2Kuntal Bhowmick
 
Class notes(week 2) on basic concepts of oop-2
Class notes(week 2) on basic concepts of oop-2Class notes(week 2) on basic concepts of oop-2
Class notes(week 2) on basic concepts of oop-2Kuntal Bhowmick
 
SKILLWISE - OOPS CONCEPT
SKILLWISE - OOPS CONCEPTSKILLWISE - OOPS CONCEPT
SKILLWISE - OOPS CONCEPTSkillwise Group
 
1. OBJECT ORIENTED PROGRAMMING USING JAVA - OOps Concepts.ppt
1. OBJECT ORIENTED PROGRAMMING USING JAVA - OOps Concepts.ppt1. OBJECT ORIENTED PROGRAMMING USING JAVA - OOps Concepts.ppt
1. OBJECT ORIENTED PROGRAMMING USING JAVA - OOps Concepts.pptsagarjsicg
 
Unit1 jaava
Unit1 jaavaUnit1 jaava
Unit1 jaavamrecedu
 
Object Oriented Programming Overview for the PeopleSoft Developer
Object Oriented Programming Overview for the PeopleSoft DeveloperObject Oriented Programming Overview for the PeopleSoft Developer
Object Oriented Programming Overview for the PeopleSoft DeveloperLee Greffin
 
object oriented programming examples
object oriented programming examplesobject oriented programming examples
object oriented programming examplesAbdii Rashid
 
Unit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rdUnit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rdprat0ham
 
SE-IT JAVA LAB OOP CONCEPT
SE-IT JAVA LAB OOP CONCEPTSE-IT JAVA LAB OOP CONCEPT
SE-IT JAVA LAB OOP CONCEPTnikshaikh786
 

Similar a An Introduction to Programming Fundamentals (20)

Oop.pptx
Oop.pptxOop.pptx
Oop.pptx
 
Practical OOP In Java
Practical OOP In JavaPractical OOP In Java
Practical OOP In Java
 
Cs2305 programming paradigms lecturer notes
Cs2305   programming paradigms lecturer notesCs2305   programming paradigms lecturer notes
Cs2305 programming paradigms lecturer notes
 
Oodb
OodbOodb
Oodb
 
JAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).pptJAVA object oriented programming (oop).ppt
JAVA object oriented programming (oop).ppt
 
oodb.ppt
oodb.pptoodb.ppt
oodb.ppt
 
Java Jive 002.pptx
Java Jive 002.pptxJava Jive 002.pptx
Java Jive 002.pptx
 
Class notes(week 2) on basic concepts of oop-2
Class notes(week 2) on basic concepts of oop-2Class notes(week 2) on basic concepts of oop-2
Class notes(week 2) on basic concepts of oop-2
 
Class notes(week 2) on basic concepts of oop-2
Class notes(week 2) on basic concepts of oop-2Class notes(week 2) on basic concepts of oop-2
Class notes(week 2) on basic concepts of oop-2
 
SKILLWISE - OOPS CONCEPT
SKILLWISE - OOPS CONCEPTSKILLWISE - OOPS CONCEPT
SKILLWISE - OOPS CONCEPT
 
Memory models in c#
Memory models in c#Memory models in c#
Memory models in c#
 
1. OBJECT ORIENTED PROGRAMMING USING JAVA - OOps Concepts.ppt
1. OBJECT ORIENTED PROGRAMMING USING JAVA - OOps Concepts.ppt1. OBJECT ORIENTED PROGRAMMING USING JAVA - OOps Concepts.ppt
1. OBJECT ORIENTED PROGRAMMING USING JAVA - OOps Concepts.ppt
 
Unit1 jaava
Unit1 jaavaUnit1 jaava
Unit1 jaava
 
Object Oriented Programming Overview for the PeopleSoft Developer
Object Oriented Programming Overview for the PeopleSoft DeveloperObject Oriented Programming Overview for the PeopleSoft Developer
Object Oriented Programming Overview for the PeopleSoft Developer
 
object oriented programming examples
object oriented programming examplesobject oriented programming examples
object oriented programming examples
 
Metamorphic Domain-Specific Languages
Metamorphic Domain-Specific LanguagesMetamorphic Domain-Specific Languages
Metamorphic Domain-Specific Languages
 
Unit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rdUnit 1 Core Java for Compter Science 3rd
Unit 1 Core Java for Compter Science 3rd
 
SE-IT JAVA LAB OOP CONCEPT
SE-IT JAVA LAB OOP CONCEPTSE-IT JAVA LAB OOP CONCEPT
SE-IT JAVA LAB OOP CONCEPT
 
General oop concept
General oop conceptGeneral oop concept
General oop concept
 
Basics of Programming.pptx
Basics of Programming.pptxBasics of Programming.pptx
Basics of Programming.pptx
 

Más de John Mulhall

cloud-migrations.pptx
cloud-migrations.pptxcloud-migrations.pptx
cloud-migrations.pptxJohn Mulhall
 
HUGIreland_VincentDeStocklin_DataScienceWorkflows
HUGIreland_VincentDeStocklin_DataScienceWorkflowsHUGIreland_VincentDeStocklin_DataScienceWorkflows
HUGIreland_VincentDeStocklin_DataScienceWorkflowsJohn Mulhall
 
HUGIreland_CronanMcNamara_DataScience_ExpertModels.pdf
HUGIreland_CronanMcNamara_DataScience_ExpertModels.pdfHUGIreland_CronanMcNamara_DataScience_ExpertModels.pdf
HUGIreland_CronanMcNamara_DataScience_ExpertModels.pdfJohn Mulhall
 
HUG_Ireland_Streaming_Ted_Dunning
HUG_Ireland_Streaming_Ted_DunningHUG_Ireland_Streaming_Ted_Dunning
HUG_Ireland_Streaming_Ted_DunningJohn Mulhall
 
HUG_Ireland_Apache_Arrow_Tomer_Shiran
HUG_Ireland_Apache_Arrow_Tomer_Shiran HUG_Ireland_Apache_Arrow_Tomer_Shiran
HUG_Ireland_Apache_Arrow_Tomer_Shiran John Mulhall
 
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016John Mulhall
 
HUG Ireland Event - HPCC Presentation Slides
HUG Ireland Event - HPCC Presentation SlidesHUG Ireland Event - HPCC Presentation Slides
HUG Ireland Event - HPCC Presentation SlidesJohn Mulhall
 
HUG Ireland Event Presentation - In-Memory Databases
HUG Ireland Event Presentation - In-Memory DatabasesHUG Ireland Event Presentation - In-Memory Databases
HUG Ireland Event Presentation - In-Memory DatabasesJohn Mulhall
 
HUG_Ireland_BryanQuinnPresentation_20160111
HUG_Ireland_BryanQuinnPresentation_20160111HUG_Ireland_BryanQuinnPresentation_20160111
HUG_Ireland_BryanQuinnPresentation_20160111John Mulhall
 
HUG Ireland Event - Dama Ireland slides
HUG Ireland Event - Dama Ireland slidesHUG Ireland Event - Dama Ireland slides
HUG Ireland Event - Dama Ireland slidesJohn Mulhall
 
Periscope Getting Started-2
Periscope Getting Started-2Periscope Getting Started-2
Periscope Getting Started-2John Mulhall
 
AIB's road-to-Real-Time-Analytics - Tommy Mitchell and Kevin McTiernan of AIB
AIB's road-to-Real-Time-Analytics - Tommy Mitchell and Kevin McTiernan of AIBAIB's road-to-Real-Time-Analytics - Tommy Mitchell and Kevin McTiernan of AIB
AIB's road-to-Real-Time-Analytics - Tommy Mitchell and Kevin McTiernan of AIBJohn Mulhall
 
Sonra Intelligence Ltd
Sonra Intelligence LtdSonra Intelligence Ltd
Sonra Intelligence LtdJohn Mulhall
 

Más de John Mulhall (13)

cloud-migrations.pptx
cloud-migrations.pptxcloud-migrations.pptx
cloud-migrations.pptx
 
HUGIreland_VincentDeStocklin_DataScienceWorkflows
HUGIreland_VincentDeStocklin_DataScienceWorkflowsHUGIreland_VincentDeStocklin_DataScienceWorkflows
HUGIreland_VincentDeStocklin_DataScienceWorkflows
 
HUGIreland_CronanMcNamara_DataScience_ExpertModels.pdf
HUGIreland_CronanMcNamara_DataScience_ExpertModels.pdfHUGIreland_CronanMcNamara_DataScience_ExpertModels.pdf
HUGIreland_CronanMcNamara_DataScience_ExpertModels.pdf
 
HUG_Ireland_Streaming_Ted_Dunning
HUG_Ireland_Streaming_Ted_DunningHUG_Ireland_Streaming_Ted_Dunning
HUG_Ireland_Streaming_Ted_Dunning
 
HUG_Ireland_Apache_Arrow_Tomer_Shiran
HUG_Ireland_Apache_Arrow_Tomer_Shiran HUG_Ireland_Apache_Arrow_Tomer_Shiran
HUG_Ireland_Apache_Arrow_Tomer_Shiran
 
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
Hadoop User Group Ireland (HUG) Ireland - Eddie Baggot Presentation April 2016
 
HUG Ireland Event - HPCC Presentation Slides
HUG Ireland Event - HPCC Presentation SlidesHUG Ireland Event - HPCC Presentation Slides
HUG Ireland Event - HPCC Presentation Slides
 
HUG Ireland Event Presentation - In-Memory Databases
HUG Ireland Event Presentation - In-Memory DatabasesHUG Ireland Event Presentation - In-Memory Databases
HUG Ireland Event Presentation - In-Memory Databases
 
HUG_Ireland_BryanQuinnPresentation_20160111
HUG_Ireland_BryanQuinnPresentation_20160111HUG_Ireland_BryanQuinnPresentation_20160111
HUG_Ireland_BryanQuinnPresentation_20160111
 
HUG Ireland Event - Dama Ireland slides
HUG Ireland Event - Dama Ireland slidesHUG Ireland Event - Dama Ireland slides
HUG Ireland Event - Dama Ireland slides
 
Periscope Getting Started-2
Periscope Getting Started-2Periscope Getting Started-2
Periscope Getting Started-2
 
AIB's road-to-Real-Time-Analytics - Tommy Mitchell and Kevin McTiernan of AIB
AIB's road-to-Real-Time-Analytics - Tommy Mitchell and Kevin McTiernan of AIBAIB's road-to-Real-Time-Analytics - Tommy Mitchell and Kevin McTiernan of AIB
AIB's road-to-Real-Time-Analytics - Tommy Mitchell and Kevin McTiernan of AIB
 
Sonra Intelligence Ltd
Sonra Intelligence LtdSonra Intelligence Ltd
Sonra Intelligence Ltd
 

Último

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 

Último (20)

Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 

An Introduction to Programming Fundamentals

  • 1. An Introduction to Programming by John Mulhall For Coder Forge Meetup Group
  • 2. johnmhll:~ johnmlhll$ whoami johnmlhll • Whoami? 15 years in Process Management and Backoffice • Transitioned to Software after a Cert in Project Management in 2014. First ever piece of coding in Sept 2014 • Can code (apps/scripts) in Java, C#, Node.js/Javascript, Python, CSS/HTML • Graduated Level 8 year long Course in Advanced Project Management (2014) with 71% and Software & Cloud Technologies in 2015 with 79% • Follow me on on LinkedIn, Google+ and Twitter @johnmlhll • Contact @ johnmlhll@yahoo.com
  • 3. Agenda • Definitions/Common Software Terms • Object Orientated Programming (OOP) • OOP V Functional Programming • Software Application Lifecycle • Programming Tips
  • 4. The States of a Programmer 2% of the time : the other 98%
  • 5. Definitions/Common Software Terms Letsexploresomeof thecommonterms… • Software Developer V Software Engineer – A Software Developer develops software whereas a Software Engineering applies engineering principles (e.g. OOP) to software creation. Not all Software Engineers are Software Developers and vice versa. • OOP – Object Orientated Programming (OOP) refers to a type of computer programming (software design) in which programmers define not only the data type of a data structure, but also the types of operations (functions) that can be applied to the data structure. (creds: Webopedia.com) Objects refer to real world component objects in the design logic under OOP. E.g. Java, C#, Python, Javascript • Functional Programming – It is a programming paradigm that preserves immutability in the mathematical design of objects, behaviors and programming flows. It is a pure processing design paradigm. Think railway tracks delivering trains from station a to b to c to its destination d. The stations are objects and the train is the subject data/query process. E.g. Pascal, Scala • Single Inheritance – A design architecture that allows inheritance from a single base class. It’s considered more structured and safer for larger projects. E.g. Java, C# • Multiple Inheritance – An OOP design architecture that solves the “diamond shape problem”. Complexity is increased and error likelihood given the inherited multiple base class relationships an object can have. For discussion: Javascript, Expandos & Mixins… E.g. Python, C++
  • 6. Definitions/Common Software Terms • RDBMS V DBMS – Relational Database Management System is a database design concept based on tables, schemas, primary keys and foreign keys driving row based data management (ACID transactions = Atomic, Consistent, Isolation, Durability). Think MySQL or SQL-Server databases as RDMBS. Data Base Management Systems refers to a collection of tables, databases and schemas without an existing storage infrastructure. Think RDBMS/NoSQL database in the one storage solution as DBMS. • SQL V NoSQL – SQL is a database manipulation language for RDBMS allowing data to be directly queried against the database tables where NoSQL (aka. Not Only SQL) is a database management system that is a schema flexible, columnar driven database management system that ID’s data by tablet, column, timestamps and row key in some cases (BASE transactions = Basically Available, Soft State, Eventual Consistency). Think “Big Data” Key Value Storage databases being designed in the BASE paradigm • NFS V DFS – Native File Systems are present on the machine or server on which you base your operation on. Distributed file system operates from a single machine across a number of machines called nodes to make up a cluster. The latter increases processing and storage power across several nodes.
  • 7. Definitions/Common Software Terms • Normal Forms 1 – 7 – These are database table design principles for RDBMS that accommodate the one to one, one to many and many to many relationships to present clear, single data piece per field data storage. The design differences range from Normal Form 1 through to 7. • Separation of Concerns – Application Software Design requires separation of concerns to ensure that if something goes one in in part, it will not adversely affect the other parts of the application. E.G. if data input from application fails, existing data stored will not be affected. Also, if business rules (software layers) change for processing customer data flows on the application layer, the underlying storage layer will not be affected • Strongly Typed – Languages that support defined data typing and compile only if explicit data type rules are defined. E.g. Java, C# • Weakly/Dynamically/Loosely Typed – Languages that support implicit data type conversions. E.g. Javascript, Python
  • 8. Definitions/Common Software Terms • Reusable Code – An engineering principle that requires code to be engineered into objects that can be reused as they are originally designed • Modular Code – An engineering principle that requires code to be engineered into objects that can be functional as a unit or module. Think assigning a behaviour to a function or method. • Readable Code – A principle that requires code to be written in convention e.g. “public static String iLoveCode(java); {}” and in a manner that tells a story about what the code is doing. e.g. Incorrect practice: “public static String x(y); {}” • Bad Coding Practice - Spaghetti Code – Code that is devoid of good coding practice, is not readable, near modular, unusable and cannot be reused due to its lack of coherence and structure. Beware of “goto” statements.
  • 9. Definitions/Common Software Terms • Base Classes – This is the base class in OOP that has the base methods associated with the class object. These methods (objects) maybe implemented or could be detailed in the case of an abstract class. All base class methods are inheritable unless they are termed “final”. E.g. “public static final String iLoveCode(java); {}” . In such a case, the method is not available to derived/concrete classes. • Derived/Concrete Classes – These are classes associated with a base class by inheritance. The derived class has the inheritable base class objects available to it and under OPP principles will have an object connection to the base class. E.g. Derived Class “public class Horse extends Animal {}” inherits from “public class Animal {}” (a Horse Is- A Animal) • Static Classes – The same as a normal case making all its members available to all classes with access to it. However static classes cannot have any instantiation. The “new” keyword cannot be used. • Final Classes – These are classes that cannot be inherited/extended
  • 10. Definitions/Common Software Terms • Abstract Classes – They a first step at defining non implementing class level objects that define members (methods and/or properties) but don’t implement them. They instead make them available for implementation in derived/concrete sub classes. • Interfaces – They are similar to Abstract Classes but are not class level objects. They implement class level objects by ensuring detailed members in the interface are implemented in the associated classes. • Objects – They are code wrapped in a header that has name, access levels, arguments and/or other elements like data type and/or inheritability associated with the code implemented within the class. Objects can be properties, variables, methods, functions, classes, etc.
  • 11. Definitions/Common Software Terms • Methods – objects within a class that define a behaviour within the program • Functions – objects that define a specific behaviour within a program • Instance Variables – variables that belong to the instantiation of an object • Static Variables – variables are are available to all classes but not available to instances of objects within the program • Class Variables – variables that belong to a class rather then a instance of a class • Local Variables – variables that are declared and accessible within a method or a function object only
  • 12. Definitions/Common Software Terms • Instance – is the “new” key word creating an object from a class or number of classes that performs a range of programmed behaviours • Properties – the assigning of object properties to a reusable variable field including getter and setter properties to be assigned to the property. E.g. “public int myProperty {get; set;}” (c# example) • Elements – the elements of a given object (class/methods) • Operators – programmatic symbols that perform specific functions, which are most commonly mathematical calculations (normally) e.g. “+-”,”%*/”…. Non mathsey examples…. ”instanceof”, “++”, “+=”
  • 13. Object Orientated Programming (OOP) • Object Orientated Programming refers to the architecture of coding around real world objects that are related to each other by a “Has-A” or “Is-A” relationship. They are considered to be be relationally linked as a result creating a programming structure based on real world objects that relate to each other within the progams use case. • E.G. – Program Car: • Car => • Engine => Wheels => CabFittings => Windows => Seats • Next level of derived class objects in the OOP design structure
  • 14. Object Orientated Programming Chart (OOP) Animal Fish Trout Shark Dolphin Mammal Dog Horse
  • 15. OOP Explained - A.P.I.E. • Abstraction – The concept of creating a layer of functionality that is visually separated from the underlying code which supports it. It creates in essence an outside view of the object where it uses its elements to execute a set of behaviours but cannot see what those elements in the underlying code are. E.g. “Kibi” is a big data tool that is separate from Kibana but developed from it. It’s a new layer of functionality on top of the original product without seeing the original product. • Polymorphism – The use of a method in subclasses for different purposes e.g. “public abstract class Surgeon{}” has a method “public void cut();” Surgeon class has two derived classes “public class Surgery{}” and “public class Barber{}” that have inherited the method “public void cut();”. Surgery class implements the method to cut into patients in surgery and Baber class implements the method to cut the surgeons hair. • Inheritance – The making available of methods and properties in a class to a class at is derived from it. • Encapsulation - When the members of a class are only visible to the other members of a class, this is called encapsulation. Encapsulation leads to “Data Hiding” (i.e. think method calls visible in main class/method & method implementations hidden in a class file)
  • 16. Abstraction • Very useful for creating new “outside in” functionality on top of existing products/layers. e.g. Meteor.js templates {{{text}}} are a layer of abstraction on top of Meteor.js. • The outside in approach allows objects to be abstracted from underlying software and used in a manner that does not reveal their distinct behaviour e.g. any SaaS Product online such as pic monkey • Abstraction increases efficiency of software whilst hiding the underlying software processes that support it.
  • 17. Polymorphism • Used to streamline coding, increase efficiency and prevent duplication of code. e.g. method cut() cut’s hair in barber class when overridden and cuts into patients in surgeon class when overridden there but the basic attributes of the method header cut() with implementation for a blade and cutting action is present in the base class version of the method that they both inherit from • Polymorphism also enables good inheritance structure whilst increasing functionality of the code. It also works well when a single element needs to be implemented in a number of classes via an interface: • Interface iCut() • { • Public void cut(): • } • //can be deployed in all classes that implement iCut();
  • 18. Inheritance • Is-A Relationship – “An Salmon Is-A Fish” • Has-A Relationship – “A Car Has-A Engine” • Class Hierarchies: • Base Class => Abstract Classes => • => Derived Classes=> Interfaces • Provides Access to Methods in Super/Base Classes • Instance Members of Classes V Class Members • Instance Members/Methods good for mutable behaviours • Class Members /Methods good for immutable behaviours
  • 19. Encapsulation • Encapsulation is about protecting attributes (variables and/or methods) from mutating over many objects or process cycles. • It basically wraps an attribute in a public read only assessor attributes (basically calls (gets) the variable/method) so the private method hidden is not changed in the resulting process. The core variable is basically encapsulated in a getMethod() or get; call to ensure it does not mutate. • This is a key feature in the singleton design pattern where a private static attribute is called by a public static attribute and provided to a single class instance.
  • 21. OOP V Functional Programming • Immutable Functional Programming V Mutable OOP • Design of OOP more for real world content housing processes. An application has weather, calendar and contacts functionality with many API calls, sub classing of distinct sub functionalities in there areas • Design of Functional more for real world processing of content. Process for data is • a) module data ngestion • B) data transformation using set criteria for standard file format • C) Data analysis and processing of data into a dashboard • Functional has less ‘moving parts’ then OOP
  • 23. Software Application Lifecycle • Common Project Management Methodologies: • Agile • Waterfall • A little of both…
  • 24. Programming Tips • Pomadora Technique – break every 35 mins for 2-5 minutes • Read from Top Down – code compiles from top down • Google is your friend - “issue-year-language” • Breakpoints - Step Through/Step Overs • Unit tests – test key assertions in your code to show behaviours so you know how if its progressing as expected • Inverted Recruiting Principle – 95% of All Junior Software Developers/Engineers are recruited by personal networks where 95% of all Junior Software Developers/Engineers rely on newspapers and recruiters in the search for employment • Zombization - Put the laptop away from time to time and go talk to people
  • 25. Debugging – Reading stack_trace • Read from top down, identify the error as it progresses through the stack • Know your exceptions/what they mean and how they relate to each other • Code to allow checked exception to be caught • E.g try {} • Catch (Exception e){}
  • 26. Stack Trace, Lets Practice Java
  • 27. Now lets do a Python stack trace
  • 28. Now for the hard one (Data Science Studio | DSS) Python layer on Java
  • 29. Summary • Write Clean Code • Stick to good coding principles of modular, readable, useable code that performs a single testable behaviour per object • OOP for complexity • Functional Programming paradigm for a linear data type processing challenge • Don’t settle for 90% done, you wont get hired. 100% Always • Continuous improvement, never stop learning • Network as much as you can to build a network that will support your career path and ambitions • Build your portfolio and get it out there, its key to success • Know how to debug your code, get help, take breaks and never give up!