This project simulates an iPhone's functionality using the MVC (Model-View-Controller) design pattern. The iPhone can act as a Music Player, Phone, and Web Browser.
src/
|-- model/
| |-- MediaPlayer.java
| |-- Phone.java
| `-- WebBrowser.java
|-- view/
| `-- iPhoneView.java
|-- controller/
| `-- iPhoneController.java
`-- main/
`-- iPhoneApp.java
-
Model: Defines the data and business logic.
MediaPlayer
: Interface defining music player functionalities.Phone
: Interface defining phone functionalities.WebBrowser
: Interface defining web browser functionalities.
-
View: Responsible for displaying information to the user.
iPhoneView
: Class that displays messages.
-
Controller: Manages the logic of the application, handling user interactions and updating the Model and View.
iPhoneController
: ImplementsMediaPlayer
,Phone
, andWebBrowser
interfaces and interacts withiPhoneView
for displaying messages.
-
Main: Entry point of the application.
iPhoneApp
: Main class that simulates the iPhone functionalities.
-
Clone the repository:
git clone https://github.com/yourusername/iPhoneMVC.git
-
Navigate to the project directory:
cd iPhoneMVC
-
Compile the project:
javac -d bin src/model/*.java src/view/*.java src/controller/*.java src/main/*.java
-
Run the application:
java -cp bin main.iPhoneApp
When you run the application, you should see output similar to the following:
Playing music...
Pausing music...
Stopping music...
Calling 123-456-7890...
Ending call...
Opening page www.example.com...
Refreshing page...
Closing page...
This is an iPhone with multiple functionalities.
-
model/MediaPlayer.java
package model; public interface MediaPlayer { void play(); void pause(); void stop(); }
-
model/Phone.java
package model; public interface Phone { void makeCall(String number); void endCall(); }
-
model/WebBrowser.java
package model; public interface WebBrowser { void openPage(String url); void refreshPage(); void closePage(); }
-
view/iPhoneView.java
package view; public class iPhoneView { public void displayMessage(String message) { System.out.println(message); } }
-
controller/iPhoneController.java
package controller; import model.MediaPlayer; import model.Phone; import model.WebBrowser; import view.iPhoneView; public class iPhoneController implements MediaPlayer, Phone, WebBrowser { private iPhoneView view; public iPhoneController(iPhoneView view) { this.view = view; } // Implementation of MediaPlayer interface methods @Override public void play() { view.displayMessage("Playing music..."); } @Override public void pause() { view.displayMessage("Pausing music..."); } @Override public void stop() { view.displayMessage("Stopping music..."); } // Implementation of Phone interface methods @Override public void makeCall(String number) { view.displayMessage("Calling " + number + "..."); } @Override public void endCall() { view.displayMessage("Ending call..."); } // Implementation of WebBrowser interface methods @Override public void openPage(String url) { view.displayMessage("Opening page " + url + "..."); } @Override public void refreshPage() { view.displayMessage("Refreshing page..."); } @Override public void closePage() { view.displayMessage("Closing page..."); } // Additional methods specific to iPhone public void showInfo() { view.displayMessage("This is an iPhone with multiple functionalities."); } }
-
main/iPhoneApp.java
package main; import view.iPhoneView; import controller.iPhoneController; public class iPhoneApp { public static void main(String[] args) { iPhoneView view = new iPhoneView(); iPhoneController controller = new iPhoneController(view); // Using MediaPlayer functionalities controller.play(); controller.pause(); controller.stop(); // Using Phone functionalities controller.makeCall("123-456-7890"); controller.endCall(); // Using WebBrowser functionalities controller.openPage("www.example.com"); controller.refreshPage(); controller.closePage(); // Display additional info controller.showInfo(); } }