Skip to content

Submit the Design Patterns Course Assignments #1

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Nov 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/course/week1/ungraded/adapter/CoffeeMachineInterface.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package course.week1.ungraded.adapter;

public interface CoffeeMachineInterface {

void chooseFirstSelection();

void chooseSecondSelection();
}
23 changes: 23 additions & 0 deletions src/course/week1/ungraded/adapter/CoffeeTouchscreenAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package course.week1.ungraded.adapter;

public class CoffeeTouchscreenAdapter implements CoffeeMachineInterface {

private final OldCoffeeMachine adaptedMachine;

public CoffeeTouchscreenAdapter(final OldCoffeeMachine vendingMachine) {

adaptedMachine = vendingMachine;
}

@Override
public void chooseFirstSelection() {

adaptedMachine.pressFirstButton();
}

@Override
public void chooseSecondSelection() {

adaptedMachine.pressSecondButton();
}
}
14 changes: 14 additions & 0 deletions src/course/week1/ungraded/adapter/OldCoffeeMachine.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package course.week1.ungraded.adapter;

public class OldCoffeeMachine {

public void pressFirstButton() {

// Original Machine - Button `1` Logic
}

public void pressSecondButton() {

// Original Machine - Button `2` Logic
}
}
10 changes: 10 additions & 0 deletions src/course/week1/ungraded/composite/IComponent.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package course.week1.ungraded.composite;

public interface IComponent {

void setSpeed(final float speed);

void play();

String getName();
}
50 changes: 50 additions & 0 deletions src/course/week1/ungraded/composite/Playlist.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package course.week1.ungraded.composite;

import java.util.ArrayList;
import java.util.List;

public class Playlist implements IComponent {

private final String name;

private final List<IComponent> songs = new ArrayList<>();

public Playlist(final String name) {

this.name = name;
}

@Override
public void setSpeed(final float speed) {

for (final IComponent song : songs) {

song.setSpeed(speed);
}
}

@Override
public void play() {

for (final IComponent song : songs) {

song.play();
}
}

@Override
public String getName() {

return name;
}

public void insert(final IComponent song) {

songs.add(song);
}

public void delete(final IComponent song) {

songs.remove(song);
}
}
44 changes: 44 additions & 0 deletions src/course/week1/ungraded/composite/Program.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package course.week1.ungraded.composite;

public class Program {

public static void main(String[] args) {

final Playlist studyPlaylist = new Playlist("Study");

final Playlist synthPopPlaylist = new Playlist("Synth Pop");

final Song synthPopSong1 = new Song("Girl Like You", "Toro Y Moi");
final Song synthPopSong2 = new Song("Outside", "TOPS");

synthPopPlaylist.insert(synthPopSong1);
synthPopPlaylist.insert(synthPopSong2);

final Playlist experimentalPlaylist = new Playlist("Experimental");

final Song experimentalSong1 = new Song("About you", "XXYYXX");
final Song experimentalSong2 = new Song("Motivation", "Clams Casino");
final Song experimentalSong3 = new Song("Computer Vision", "Oneohtrix Point Never");

experimentalPlaylist.insert(experimentalSong1);
experimentalPlaylist.insert(experimentalSong2);
experimentalPlaylist.insert(experimentalSong3);

experimentalPlaylist.setSpeed(0.5f);
experimentalPlaylist.insert(synthPopPlaylist);
studyPlaylist.insert(experimentalPlaylist);

final Song glitchSong = new Song("Textuell", "Oval");

glitchSong.setSpeed(1.25f);
glitchSong.play();

System.out.printf("Song Name = [%s].%n", glitchSong.getName());
System.out.printf("Song Artist = [%s.]%n", glitchSong.getArtist());

studyPlaylist.insert(glitchSong);
studyPlaylist.play();

System.out.printf("Playlist Name = [%s].%n", studyPlaylist.getName());
}
}
38 changes: 38 additions & 0 deletions src/course/week1/ungraded/composite/Song.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package course.week1.ungraded.composite;

public class Song implements IComponent {

private final String name;
private final String artist;

private float speed = 1f;

public Song(final String name, final String artist) {

this.name = name;
this.artist = artist;
}

@Override
public void setSpeed(final float speed) {

this.speed = speed;
}

@Override
public void play() {

System.out.printf("Playing `%s` by `%s`, at %.2fx Speed...%n", name, artist, speed);
}

@Override
public String getName() {

return name;
}

public String getArtist() {

return artist;
}
}
74 changes: 74 additions & 0 deletions src/course/week2/capstone/command/AddContactActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.example.sharingapp;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import javafx.scene.web.HTMLEditorSkin.Command;

public class AddContactActivity extends AppCompatActivity {

private Context context;

private EditText username;
private EditText email;

private ContactList contactList = new ContactList();

@Override
protected void onCreate(final Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_contact);

username = (EditText) findViewById(R.id.username);
email = (EditText) findViewById(R.id.email);

context = getApplicationContext();
contactList.loadContacts(context);
}

public void saveContact(final View view) {

final String usernameStr = username.getText().toString();
final String emailStr = email.getText().toString();

if (usernameStr.equals("")) {

username.setError("Empty field!");
return;
}

if (emailStr.equals("")) {

email.setError("Empty field!");
return;
}

if (!emailStr.contains("@")) {

email.setError("Must be an email address!");
return;
}

if (!contactList.isUsernameAvailable(usernameStr)) {

username.setError("Username already taken!");
return;
}

final Contact contact = new Contact(usernameStr, emailStr, null);
final Command command = new AddContactCommand(contactList, contact, context);

command.execute();

if (!command.isExecuted()) {

return;
}

finish();
}
}

27 changes: 27 additions & 0 deletions src/course/week2/capstone/command/AddContactCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.example.sharingapp;

import android.content.Context;

public class AddContactCommand extends Command {

private final ContactList contactList;

private final Contact contact;
private final Context context;

public AddContactCommand(final ContactList contactList,
final Contact contact, final Context context) {

this.contactList = contactList;

this.contact = contact;
this.context = context;
}

@Override
public void execute() {

contactList.addContact(contact);
setIsExecuted(contactList.saveContacts(context));
}
}
27 changes: 27 additions & 0 deletions src/course/week2/capstone/command/DeleteContactCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.example.sharingapp;

import android.content.Context;

public class DeleteContactCommand extends Command {

private final ContactList contactList;

private final Contact contact;
private final Context context;

public DeleteContactCommand(final ContactList contactList,
final Contact contact, final Context context) {

this.contactList = contactList;

this.contact = contact;
this.context = context;
}

@Override
public void execute() {

contactList.deleteContact(contact);
setIsExecuted(contactList.saveContacts(context));
}
}
Loading