KEMBAR78
Chapter 3 | PDF | Class (Computer Programming) | Method (Computer Programming)
0% found this document useful (0 votes)
27 views15 pages

Chapter 3

The document provides an overview of Object-Oriented Programming (OOP) concepts in Java and JavaScript, including classes, objects, inheritance, encapsulation, polymorphism, and asynchronous programming. It explains the structure and syntax for creating classes and objects, as well as methods for handling asynchronous operations like callbacks, promises, and the Fetch API. Additionally, it covers WebSockets for real-time communication and event handling through callback functions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views15 pages

Chapter 3

The document provides an overview of Object-Oriented Programming (OOP) concepts in Java and JavaScript, including classes, objects, inheritance, encapsulation, polymorphism, and asynchronous programming. It explains the structure and syntax for creating classes and objects, as well as methods for handling asynchronous operations like callbacks, promises, and the Fetch API. Additionally, it covers WebSockets for real-time communication and event handling through callback functions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 15

3.

1 Introduction to Objects and Classes (in Java or OOP in


general)

In Object-Oriented Programming (OOP), classes and objects are the


foundation of building applications. Here's a breakdown of the concept:

🔷 Class

 A class is a blueprint or template for creating objects.

 It defines the data (fields/attributes) and behavior


(methods/functions) of the objects.

Example in Java:

public class Car {

// Fields or attributes

String color;

String model;

// Method or behavior

void drive() {

System.out.println("The car is driving.");

🔷 Object

 An object is an instance of a class.

 It is created using the new keyword and has its own state (values of
fields).

 Multiple objects can be created from the same class, each with its
own data.

Example in Java:

public class Main {

public static void main(String[] args) {

// Creating an object of Car

Car myCar = new Car();

myCar.color = "Red";
myCar.model = "Honda Civic";

// Accessing method

myCar.drive();

System.out.println("Color: " + myCar.color);

System.out.println("Model: " + myCar.model);

🔶 Summary of Key Concepts

Term Description

Blueprint that defines attributes and


Class
methods

Object Instance of a class with actual values

Variable inside a class (defines object


Field
properties)

Metho Function defined inside a class (defines


d behavior)

Sure! Here's a clear and concise explanation of Creating and Using


JavaScript Classes and Object Prototypes:

🔷 1. Creating and Using JavaScript Classes

JavaScript introduced the class syntax in ES6 (ECMAScript 2015) to


make object-oriented programming more familiar and readable.

✅ Class Syntax

class Person {

constructor(name, age) {

this.name = name;

this.age = age;

}
// Method

greet() {

console.log(`Hello, my name is ${this.name}`);

// Creating an object (instance)

const p1 = new Person("Alice", 25);

p1.greet(); // Output: Hello, my name is Alice

Behind the scenes, JavaScript classes use prototypes for inheritance.

🔷 2. Object Prototypes in JavaScript

JavaScript is prototype-based, meaning every object has a hidden


internal property [[Prototype]], which links to another object. You can
access this using __proto__ or Object.getPrototypeOf(obj).

✅ Creating Prototypes Manually

function Animal(type) {

this.type = type;

// Adding method to prototype

Animal.prototype.makeSound = function() {

console.log(`${this.type} makes a sound.`);

};

const dog = new Animal("Dog");

dog.makeSound(); // Output: Dog makes a sound.

This is how things were done before class syntax was introduced.

🔁 Prototypal Inheritance

You can create one object that inherits from another:


const animal = {

speak() {

console.log("Animal speaks");

};

const cat = Object.create(animal);

cat.speak(); // Output: Animal speaks

🔶 Summary

Feature Description

class Modern syntax for creating constructors and prototypes

constructor() Special method for initializing class objects

Object where shared methods/properties live for memory


prototype
efficiency

Object.creat
Way to create objects with a specific prototype
e()

Great! Let's dive into two core Object-Oriented Programming (OOP)


concepts in JavaScript:

🔷 1. Inheritance Patterns in JavaScript

Inheritance allows one object (child/subclass) to acquire properties and


methods of another (parent/superclass).

✅ A. Using Prototypes (Pre-ES6)

function Animal(name) {

this.name = name;

Animal.prototype.speak = function() {

console.log(`${this.name} makes a sound`);

};
function Dog(name) {

Animal.call(this, name); // Inherit constructor

// Inherit methods

Dog.prototype = Object.create(Animal.prototype);

Dog.prototype.constructor = Dog;

Dog.prototype.bark = function() {

console.log(`${this.name} barks`);

};

const d = new Dog("Buddy");

d.speak(); // Buddy makes a sound

d.bark(); // Buddy barks

✅ B. Using class (ES6)

class Animal {

constructor(name) {

this.name = name;

speak() {

console.log(`${this.name} makes a sound`);

class Dog extends Animal {

bark() {

console.log(`${this.name} barks`);
}

const d = new Dog("Max");

d.speak(); // Max makes a sound

d.bark(); // Max barks

The extends keyword sets up inheritance automatically, including


prototype chaining.

🔷 2. Encapsulation Techniques in JavaScript

Encapsulation is about hiding internal details and exposing only what's


necessary.

✅ A. Public vs Private Fields (Modern - ES2022+)

class Person {

#ssn; // private field

constructor(name, ssn) {

this.name = name; // public

this.#ssn = ssn; // private

getSSN() {

return this.#ssn;

const p = new Person("Alice", "123-45-6789");

console.log(p.name); // Alice

console.log(p.getSSN()); // 123-45-6789

// console.log(p.#ssn); ❌ Error: Private field '#ssn' must be declared in an


enclosing class
✅ B. Closure-based Encapsulation (Pre-ES6)

function SecretHolder(secret) {

let _secret = secret;

return {

getSecret: function() {

return _secret;

};

const holder = SecretHolder("top-secret");

console.log(holder.getSecret()); // top-secret

🔶 Summary

Concept Description Syntax Used

Share behavior between extends,


Inheritance
classes/objects Object.create()

Encapsulatio Hide internal data, expose only #privateField,


n necessary APIs closures

Sure! Here's a clear explanation of Polymorphism and Code


Reusability in JavaScript (and OOP in general):

🔷 1. Polymorphism

Polymorphism means "many forms" — the same method name can


behave differently depending on the object that uses it. It’s a key OOP
concept for flexibility and maintainability.

✅ Example: Method Overriding (Runtime Polymorphism)

In JavaScript, you can achieve polymorphism by overriding methods in


child classes.

class Animal {
speak() {

console.log("Animal speaks");

class Dog extends Animal {

speak() {

console.log("Dog barks");

class Cat extends Animal {

speak() {

console.log("Cat meows");

const animals = [new Dog(), new Cat(), new Animal()];

animals.forEach(animal => {

animal.speak(); // Polymorphic behavior: different output for each class

});

Output:

Dog barks

Cat meows

Animal speaks

Each object responds to the speak() method in its own way.

🔷 2. Code Reusability
Code Reusability is the ability to use existing code in new ways without
rewriting it — a major benefit of OOP.

✅ Using Inheritance for Reusability

class Vehicle {

constructor(brand) {

this.brand = brand;

move() {

console.log(`${this.brand} is moving`);

class Car extends Vehicle {

honk() {

console.log(`${this.brand} says beep beep!`);

const car = new Car("Toyota");

car.move(); // Inherited method

car.honk(); // Car-specific method

The Car class reuses the move() method from Vehicle while adding its
own functionality.

🔶 Summary

Concept Description

Same method name, different implementations (e.g.,


Polymorphism
speak() for each animal)

Code
Reusing common logic through inheritance or composition
Reusability
Absolutely! Here's a breakdown of Asynchronous JavaScript, including
Callbacks, Promises, Async/Await, Timers, and Fetch API for
managing asynchronous data flow:

🔷 1. Asynchronous JavaScript

JavaScript is single-threaded, but it supports asynchronous


operations (like API calls, timers) using the event loop to avoid blocking
the main thread.

🔸 A. Callbacks

A callback is a function passed as an argument to another function and


called when the operation completes.

function fetchData(callback) {

setTimeout(() => {

callback("Data loaded!");

}, 1000);

fetchData((data) => {

console.log(data); // Output after 1 sec: Data loaded!

});

❗ Problem: Callback Hell — hard to manage when deeply nested.

🔸 B. Promises

A Promise represents a value that may be available now, later, or


never.

const promise = new Promise((resolve, reject) => {

setTimeout(() => resolve("Success!"), 1000);

});
promise.then((result) => console.log(result)); // Output after 1 sec:
Success!

Promise States:

 Pending

 Fulfilled (resolve)

 Rejected (reject)

🔸 C. Async/Await (Modern & Preferred)

async functions allow writing asynchronous code like synchronous.

function getData() {

return new Promise(resolve => {

setTimeout(() => resolve("Data received"), 1000);

});

async function showData() {

const data = await getData();

console.log(data);

showData(); // Output after 1 sec: Data received

Makes asynchronous code cleaner and readable.

🔷 2. Working with Timers and Intervals

✅ setTimeout() – run once after delay

setTimeout(() => {

console.log("Runs after 2 seconds");

}, 2000);

✅ setInterval() – run repeatedly


let count = 0;

const interval = setInterval(() => {

console.log("Interval count:", ++count);

if (count === 3) clearInterval(interval); // stop after 3 times

}, 1000);

🔷 3. Handling HTTP Requests with Fetch API

The Fetch API is used to make HTTP requests and returns a Promise.

fetch("https://jsonplaceholder.typicode.com/posts/1")

.then(response => response.json())

.then(data => console.log(data))

.catch(err => console.error("Error:", err));

✅ Using async/await with Fetch:

async function getPost() {

try {

const response = await


fetch("https://jsonplaceholder.typicode.com/posts/1");

const data = await response.json();

console.log(data);

} catch (error) {

console.error("Error:", error);

getPost();

🔶 Summary Table

Concept Description Syntax Example

Callback Function called when async work fetchData(() => {...})


Concept Description Syntax Example

finishes

Promise Cleaner alternative to callbacks new Promise(...).then()

Async/
Syntactic sugar over promises await fetch(...)
Await

setTimeou
Delay execution setTimeout(fn, ms)
t

setInterval Repeat execution setInterval(fn, ms)

fetch(...).then(...).catc
Fetch API Handle HTTP requests
h(...)

🔷 3.4 Introduction to WebSockets

✅ What is a WebSocket?

 WebSocket is a full-duplex, persistent connection between the


client and server.

 Unlike HTTP, WebSocket allows real-time two-way


communication.

✅ How WebSocket Works:

1. Client sends a WebSocket request to the server.

2. Server upgrades the connection from HTTP to WebSocket.

3. Both can now send messages any time (without polling).

✅ Example: WebSocket (Browser-side)

const socket = new WebSocket("ws://echo.websocket.org");

// Connection opened

socket.addEventListener("open", () => {

console.log("Connected to server");

socket.send("Hello Server!");

});
// Receiving message

socket.addEventListener("message", (event) => {

console.log("Message from server:", event.data);

});

In a real-world app, you’d connect to your backend WebSocket (e.g.,


ws://localhost:3000 or a live server).

🔷 3.5 Event Handlers and Callback Functions

✅ A. Event Handlers

 Functions that run in response to an event, like a button click or


input change.

<button id="myBtn">Click Me</button>

<script>

document.getElementById("myBtn").addEventListener("click", () => {

alert("Button Clicked!");

});

</script>

Common events: click, mouseover, keydown, submit, load, etc.

✅ B. Callback Functions

A callback is a function passed into another function to be executed later.

Basic Example:

function greet(name, callback) {

console.log("Hello " + name);

callback();

function sayBye() {

console.log("Goodbye!");
}

greet("Alice", sayBye);

Output:

Hello Alice

Goodbye!

✅ Event Handlers are Callbacks

When you write:

element.addEventListener("click", () => {

console.log("Clicked");

});

You're passing a callback to handle the "click" event.

🔶 Summary

Concept Description

Real-time, bi-directional connection between client and


WebSockets
server

Event Functions that run when an event occurs (e.g., user


Handlers actions)

Callback Functions passed to another function to run later or on


Funcs completion

You might also like