Advanced Object Oriented Programming-AOOP(A)
Course Code-23CS2103A
Name: K. Madhu mitha
ID Number: 2300090088
Skill-Week-3
Question-1:
package Problem1;
interface PaymentProcessor {
void processPayment(double amount);
class PayPalAdapter implements PaymentProcessor {
private PayPalAPI payPalAPI;
public PayPalAdapter() {
[Link] = new PayPalAPI();
@Override
public void processPayment(double amount) {
[Link](amount);
class StripeAdapter implements PaymentProcessor {
private StripeAPI stripeAPI;
public StripeAdapter() {
[Link] = new StripeAPI();
@Override
public void processPayment(double amount) {
[Link](amount);
class PayPalAPI {
public void pay(double amount) {
[Link]("Paid " + amount + " using PayPal");
class StripeAPI {
public void charge(double amount) {
[Link]("Charged " + amount + " using Stripe");
public class PaymentClient {
public static void main(String[] args) {
PaymentProcessor paypalProcessor = new PayPalAdapter();
[Link](100.0);
PaymentProcessor stripeProcessor = new StripeAdapter();
[Link](200.0);
}
Output:
Question-2:
package Problem2;
abstract class TextProcessor {
public abstract String process(String text);
class BaseTextProcessor extends TextProcessor {
@Override
public String process(String text) {
return text;
abstract class TextProcessorDecorator extends TextProcessor {
protected TextProcessor textProcessor;
public TextProcessorDecorator(TextProcessor textProcessor) {
[Link] = textProcessor;
@Override
public String process(String text) {
return [Link](text);
class SpellCheckDecorator extends TextProcessorDecorator {
public SpellCheckDecorator(TextProcessor textProcessor) {
super(textProcessor);
@Override
public String process(String text) {
text = [Link](text);
return spellCheck(text);
private String spellCheck(String text) {
return [Link]("teh", "the");
class TextFormatDecorator extends TextProcessorDecorator {
public TextFormatDecorator(TextProcessor textProcessor) {
super(textProcessor);
@Override
public String process(String text) {
text = [Link](text);
return formatText(text);
private String formatText(String text) {
return [Link]().replaceAll("\\s+", " ");
public class TextProcessingClient {
public static void main(String[] args) {
TextProcessor baseProcessor = new BaseTextProcessor();
TextProcessor spellCheckedProcessor = new SpellCheckDecorator(baseProcessor);
TextProcessor formattedProcessor = new TextFormatDecorator(spellCheckedProcessor);
String text = " teh quick brown fox jumps ";
String result = [Link](text);
[Link]("Original Text: \"" + text + "\"");
[Link]("Processed Text: \"" + result + "\"");
Output:
Question-3:
package Problem3;
interface VideoFormat {
void play(String fileName);
class MP4Player implements VideoFormat {
@Override
public void play(String fileName) {
[Link]("Playing MP4 file: " + fileName);
class AVIPlayer implements VideoFormat {
@Override
public void play(String fileName) {
[Link]("Playing AVI file: " + fileName);
}
}
class MKVPlayer implements VideoFormat {
@Override
public void play(String fileName) {
[Link]("Playing MKV file: " + fileName);
interface OperatingSystem {
void playVideo(String fileName, VideoFormat videoFormat);
class WindowsOS implements OperatingSystem {
@Override
public void playVideo(String fileName, VideoFormat videoFormat) {
[Link]("Windows OS:");
[Link](fileName);
class MacOS implements OperatingSystem {
@Override
public void playVideo(String fileName, VideoFormat videoFormat) {
[Link]("macOS:");
[Link](fileName);
class LinuxOS implements OperatingSystem {
@Override
public void playVideo(String fileName, VideoFormat videoFormat) {
[Link]("Linux OS:");
[Link](fileName);
public class VideoPlayerClient {
public static void main(String[] args) {
VideoFormat mp4 = new MP4Player();
VideoFormat avi = new AVIPlayer();
VideoFormat mkv = new MKVPlayer();
OperatingSystem windows = new WindowsOS();
OperatingSystem mac = new MacOS();
OperatingSystem linux = new LinuxOS();
[Link]("video1.mp4", mp4);
[Link]("[Link]", avi);
[Link]("[Link]", mkv);
Output:
Question-4:
package Problem4;
interface StockPriceProvider {
double getStockPrice(String stockSymbol);
class StockAPIA {
public double getPrice(String stockSymbol) {
return 150.75;
class StockAPIB {
public String fetchStockPrice(String stockSymbol) {
return "120.50";
}
class StockAPIAAdapter implements StockPriceProvider {
private StockAPIA stockAPIA;
public StockAPIAAdapter(StockAPIA stockAPIA) {
[Link] = stockAPIA;
@Override
public double getStockPrice(String stockSymbol) {
return [Link](stockSymbol);
class StockAPIBAdapter implements StockPriceProvider {
private StockAPIB stockAPIB;
public StockAPIBAdapter(StockAPIB stockAPIB) {
[Link] = stockAPIB;
@Override
public double getStockPrice(String stockSymbol) {
return [Link]([Link](stockSymbol));
class StockPriceViewer {
private StockPriceProvider provider;
public StockPriceViewer(StockPriceProvider provider) {
[Link] = provider;
}
public void displayStockPrice(String stockSymbol) {
[Link]("Stock Price of " + stockSymbol + ": " + [Link](stockSymbol));
public class Main {
public static void main(String[] args) {
StockAPIA apiA = new StockAPIA();
StockPriceProvider providerA = new StockAPIAAdapter(apiA);
StockPriceViewer viewerA = new StockPriceViewer(providerA);
[Link]("AAPL");
StockAPIB apiB = new StockAPIB();
StockPriceProvider providerB = new StockAPIBAdapter(apiB);
StockPriceViewer viewerB = new StockPriceViewer(providerB);
[Link]("GOOG");
Output: