lecture-4 oop concepts of js ajax - columbia …ramana/fall-2019/lecturenotes/...lecture-4 •oop...

13
1 W3101: Programming Languages: Javascript Ramana Isukapalli LECTURE-4 OOP Concepts of JS AJAX

Upload: others

Post on 08-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

1W3101: Programming Languages: JavascriptRamana Isukapalli

LECTURE-4

•OOP Concepts of JS

• AJAX

Page 2: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

2W3101: Programming Languages: JavascriptRamana Isukapalli

OOP FEATURES

• Main OOP concepts• Treat real world entities as “objects”• Has data and methods

• Important features of OOP• Data encapsulation• Inheritance• Polymorphism

• JS supports these OOP features• But note: JS is a weakly typed language.• Implementation of these features

• Different from strongly typed languages like C++ and JAVA

Page 3: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

3W3101: Programming Languages: JavascriptRamana Isukapalli

CREATING JS OBJECTS

• Create an instance of an object directlyp1 = new Object( ); // Create an object directly using newp1.firstname = "John"; // Set data variablesp1.lastname = "Doe";p1.age = 50;p1.eyecolor = "blue“;p1.incrementAge = changeAge; // Set methodp1.incrementAge( ); // Call methodfunction changeAge( ) // Function definition{

this.age++;}

Note: There is NO class keyword, as in C++, JAVA

Page 4: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

4W3101: Programming Languages: JavascriptRamana Isukapalli

CREATING JS OBJECTS … CONTD.

• Crate using a template – use function// Template (class) definition

function person (first, last, age, color) // Constructor{

this.firstname = first;this.lastname = last;this.age = age;this.eyecolor = color;this.incrementAge = changeAge; // Define a member function

}

// Function definitionfunction changeAge( ){

this.age++;}

// Creating a new object of personp1 = new person (“David”, “Miller”, 50, “brown”);

Page 5: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

5W3101: Programming Languages: JavascriptRamana Isukapalli

USEFUL JAVASCRIPT OBJECTS

• String

• Array

• Boolean

• Date

• Math

http://w3schools.com/jsref/

Page 6: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

6W3101: Programming Languages: JavascriptRamana Isukapalli

DATA ENCAPSULATION

• Data encapsulation is achieved using• C++: public, private protected• Java: public, private

• JS• public – accessible to class/external members• private – accessible to private/privileged members• Privileged methods

• Can access private functions• Can access and change private data• Something like public access functions of C++, JAVA

Page 7: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

7W3101: Programming Languages: JavascriptRamana Isukapalli

PUBLIC MEMBERS

// Public data member definitionfunction public_Fn_Eg (…) { this. publicMember = <value>;}

// Public function definitionpublic_Fn_Eg.prototype.pubFn = function (<params>)

{ // code

}

Page 8: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

8W3101: Programming Languages: JavascriptRamana Isukapalli

PRIVATE MEMBERS

function private_Fn_Eg (…){

// private data membersvar privateMember = <value>;

//private functionsfunction privateFunction_1 (<params>){

// code}

var privateFunction_2 = function(<params>){

// code}

}

Page 9: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

9W3101: Programming Languages: JavascriptRamana Isukapalli

PRIVILEGED FUNCTIONS

function privileged_fn_Eg

{

this.privilegedFn = function(…)

{

// CAN access private functions

// CAN access/change private data

}

}

Page 10: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

10W3101: Programming Languages: JavascriptRamana Isukapalli

INHERITANCE

• Define parent and child template functions as before.

• To define the inheritance, use• child.prototype = new parent;

• Children do NOT have access to parent’s private members.

Page 11: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

11W3101: Programming Languages: JavascriptRamana Isukapalli

POLYMORPHISM

• Inherently supported in Javascript

• Any object calls member function in the most specific template class.

• Child objects call member functions• From the child class if defined in child objects.

• From the parent class, otherwise.

• Parent objects calls the function from the parent template class.

Page 12: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

12W3101: Programming Languages: JavascriptRamana Isukapalli

AJAX – ASYNCHRONOUS JAVA AND XML

• Made popular by Google (with Google Suggest).• NOT a new programming language• A new way to use existing standards.

• Based on JavaScript and HTTP requests.• With AJAX, JavaScript communicates• Directly with the (web) server• using XMLHttpRequest object• To retrieve data as needed• Using Javascript events (e.g., keyPressed)• WITHOUT refreshing the page.

Page 13: LECTURE-4 OOP Concepts of JS AJAX - Columbia …ramana/Fall-2019/lectureNotes/...LECTURE-4 •OOP Concepts of JS •AJAX 2 W3101: Programming Languages: Javascript Ramana Isukapalli

13W3101: Programming Languages: JavascriptRamana Isukapalli

HOW DOES AJAX WORK … CONTD.

Source: W3Schools