slips
November 30, 2023

SLIP25

Q.1 Write a Java Program to implement Iterator Pattern for Designing Menu like Breakfast, Lunch or Dinner Menu.

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

// Define MenuItem class to represent menu items
class MenuItem {
    private String name;
    private double price;

    public MenuItem(String name, double price) {
        this.name = name;
        this.price = price;
    }

    public String getName() {
        return name;
    }

    public double getPrice() {
        return price;
    }
}

// Define a Menu interface with an iterator method
interface Menu {
    Iterator<MenuItem> createIterator();
}

// Implement BreakfastMenu class
class BreakfastMenu implements Menu {
    private ArrayList<MenuItem> items;

    public BreakfastMenu() {
        items = new ArrayList<>();
        addItem("Pancakes", 40);
        addItem("Omelette", 50);
    }

    public void addItem(String name, double price) {
        MenuItem menuItem = new MenuItem(name, price);
        items.add(menuItem);
    }

    public Iterator<MenuItem> createIterator() {
        return items.iterator();
    }
}

// Implement LunchMenu class (similar to BreakfastMenu)
class LunchMenu implements Menu {
    private ArrayList<MenuItem> items;

    public LunchMenu() {
        items = new ArrayList<>();
        addItem("Burger", 90);
        addItem("Salad", 60);
    }

    public void addItem(String name, double price) {
        MenuItem menuItem = new MenuItem(name, price);
        items.add(menuItem);
    }

    public Iterator<MenuItem> createIterator() {
        return items.iterator();
    }
}

// Implement DinnerMenu class (similar to BreakfastMenu)
class DinnerMenu implements Menu {
    private ArrayList<MenuItem> items;

    public DinnerMenu() {
        items = new ArrayList<>();
        addItem("Steak", 150);
        addItem("Fish", 120);
    }

    public void addItem(String name, double price) {
        MenuItem menuItem = new MenuItem(name, price);
        items.add(menuItem);
    }

    public Iterator<MenuItem> createIterator() {
        return items.iterator();
    }
}

// Define a Waitress class to interact with menus
class Waitress {
    private Menu menu;

    public Waitress(Menu menu) {
        this.menu = menu;
    }

    public void printMenu() {
        Iterator<MenuItem> iterator = menu.createIterator();
        while (iterator.hasNext()) {
            MenuItem menuItem = iterator.next();
            System.out.println(menuItem.getName() + ": Rs." + menuItem.getPrice());
        }
    }

    public void takeOrder() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Please enter the item you'd like to order: ");
        String order = scanner.nextLine();
        System.out.println("You ordered: " + order);
    }
}

public class Break {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Select a menu: ");
        System.out.println("1. Breakfast");
        System.out.println("2. Lunch");
        System.out.println("3. Dinner");
        int userChoice = scanner.nextInt();

        Menu selectedMenu = null;

        switch (userChoice) {
            case 1:
                selectedMenu = new BreakfastMenu();
                break;
            case 2:
                selectedMenu = new LunchMenu();
                break;
            case 3:
                selectedMenu = new DinnerMenu();
                break;
            default:
                System.out.println("Invalid choice");
                return;
        }

        Waitress waitress = new Waitress(selectedMenu);
        waitress.printMenu();
        waitress.takeOrder();

        System.out.println("Enjoy your meal !");
    }
}

Q.2 Write a python program to transform data with Principal Component Analysis (PCA). Use handwritten digit dataset.

import numpy as np
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.datasets import load_digits

# Load the digits dataset
digits = load_digits()
data = digits.data
target = digits.target

# Visualize a few digits before PCA
fig, axes = plt.subplots(2, 5, figsize=(10, 5),
                         subplot_kw={'xticks':[], 'yticks':[]},
                         gridspec_kw=dict(hspace=0.1, wspace=0.1))

for i, ax in enumerate(axes.flat):
    ax.imshow(digits.images[i], cmap='binary', interpolation='nearest')
    ax.text(0.05, 0.05, str(digits.target[i]),
            transform=ax.transAxes, color='green')

plt.show()

# Apply PCA to reduce the dimensionality
n_components = 2  # You can adjust the number of components as needed
pca = PCA(n_components=n_components)
transformed_data = pca.fit_transform(data)

# Visualize the dataset after PCA
plt.figure(figsize=(8, 6))
for i in range(10):
    plt.scatter(transformed_data[target == i, 0], transformed_data[target == i, 1],
                label=str(i), alpha=0.7)

plt.title('Handwritten Digit Dataset after PCA')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.legend()
plt.show()

# import numpy as np
# import matplotlib.pyplot as plt
# from sklearn import datasets
# from sklearn.decomposition import PCA

# # Load the digits dataset
# digits = datasets.load_digits()
# X = digits.data
# y = digits.target

# # Perform PCA
# pca = PCA(n_components=2)
# X_pca = pca.fit_transform(X)

# # Plot the original data and PCA-transformed data with digits
# plt.figure(figsize=(12, 6))

# plt.subplot(1, 2, 1)
# plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis', alpha=0.5)
# plt.title('Original Data')
# plt.xlabel('Feature 1')
# plt.ylabel('Feature 2')

# plt.subplot(1, 2, 2)
# plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis', alpha=0.5)
# plt.title('Data after PCA')
# plt.xlabel('Principal Component 1')
# plt.ylabel('Principal Component 2')

# plt.show()

Q.3 Implement useEffect hook and print all three life cycle states a. e.g Inside mount b. e.g Inside update c. e.g Inside unmount

Paste LifecycleExample.jsx in src folder

After Running The React App On Port . Press Right Click On Web Page And Choose Inspect Option And Select The Console Tab To Show The Log .

import React, { useState, useEffect } from 'react';

const LifecycleExample = () => {
  // Mounting
  useEffect(() => {
    console.log('Inside mount');
    
    // Cleanup function (will be called on unmount)
    return () => {
      console.log('Inside unmount');
    };
  }, []);

  // Updating
  useEffect(() => {
    console.log('Inside update');

    // Cleanup function (will be called on update and unmount)
    return () => {
      console.log('Inside unmount (from update)');
    };
  });

  // State for updating
  const [count, setCount] = useState(0);

  return (
    <div>
      <h1>Lifecycle Example</h1>
      <p>Current Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increase Count</button>
    </div>
  );
};

export default LifecycleExample;