Extract Exam

This commit is contained in:
2023-04-27 13:57:24 -05:00
parent c06148228b
commit 02a88ea7fe
12 changed files with 2467 additions and 0 deletions

View File

@@ -0,0 +1,111 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package problem2;
import java.util.Arrays;
/**
*
* @author ar114
*/
public class Contact implements Comparable<Contact>, Cloneable{
private String name;
private char[] address;
private String phone;
public Contact(String name, char[] address, String phone) {
this.name = name;
// Create a new address object.
this.address = Arrays.copyOf(address, address.length);
this.phone = phone;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char[] getAddress() {
return address;
}
public void setAddress(char[] address) {
// Create a new address object.
this.address = Arrays.copyOf(address, address.length);
}
@Override
public String toString() {
return "Contract{" + "name=" + name + ", address=" + new String(address) + ", phone=" + phone + '}';
}
@Override
public int compareTo(Contact o) { // I know this isn't the correct way of obtaining these values, I'm unsure of the correct solution.
int difference = 0;
difference += this.name.compareTo(o.name);
difference += this.address.toString().compareTo(o.address.toString());
difference += this.phone.compareTo(o.phone);
return difference;
}
@Override
protected Object clone() {
// Create new objects.
String newName = new String(name);
char[] newAddress = Arrays.copyOf(address, address.length);
String newPhone = new String(phone);
return new Contact(newName, newAddress, newPhone);
}
public static void main(String[] args)
{
char[] address1 =
{
'S', 'P', 'A', 'R', 'T', 'A'
};
Contact leonidas = new Contact("Leonidas King of Sparta", address1, "888-123-4577");
System.out.println(leonidas);
address1[0] = 'A';
address1[1] = 'T';
address1[2] = 'H';
address1[3] = 'E';
address1[4] = 'N';
address1[5] = 'S';
System.out.println(leonidas);
Object clonedLeonidas = leonidas.clone();
System.out.println(leonidas);
System.out.println(clonedLeonidas);
address1[0] = 'A';
address1[1] = 'R';
address1[2] = 'G';
address1[3] = 'O';
address1[4] = 'S';
address1[5] = ' ';
System.out.println(leonidas);
System.out.println(clonedLeonidas);
Contact pericles = new Contact("Pericles President of Athens", address1, "422-511-1232");
System.out.println("Pericles compareTo Pericles = " + pericles.compareTo(pericles));
System.out.println("Pericles compareTo Leonidas = " + pericles.compareTo(leonidas));
System.out.println("Cloned Leonidas compareTo Pericles = " + ((Contact) clonedLeonidas).compareTo(pericles));
}
}

View File

@@ -0,0 +1,208 @@
import java.util.Arrays;
import javax.naming.SizeLimitExceededException;
public class MyContacts implements Scramble
{
private Contact[] contacts;
private int size;
public final static int CAPACITY = 2;
/**
* Adds a new contact.
*
* @param c the contact to be added
* @throws SizeLimitExceededException if we exceed the MyContacts.CAPACITY
*/
public void add(Contact c) throws SizeLimitExceededException
{
if (this.size != CAPACITY) {
contacts[size] = c;
} else {
throw new SizeLimitExceededException("Capacity Exceeded!");
}
size++;
}
public MyContacts()
{
contacts = new Contact[CAPACITY];
}
@Override
public String toString()
{
String s = "";
for (int i = 0; i < this.size; ++i)
{
s += contacts[i].toString() + "\n";
}
return s;
}
/**
* Encrypts by adding the encyptionKey(String) parameter in the front of every
* property of every contact in the array .
*
* @param encyptionKey the object to be added as String to the front of
* every property of the Contact.
* @return the encrypted array as Object type
*/
@Override
public Object encrypt(Object encyptionKey)
{
for (int i = 0; i < size; ++i)
{
contacts[i].setName(encyptionKey.toString() + contacts[i].getName());
contacts[i].setAddress((encyptionKey.toString() + new String(contacts[i].getAddress())).toCharArray()
);
contacts[i].setPhone(encyptionKey.toString() + contacts[i].getPhone());
}
return this;
}
/**
* Decrypts by removing the encyptionKey parameter from the front of every
* property of every contact in the array.
*
* @param decryptionKey the object(String) to be removed from the front of
* every property of the Contact in the array.
* @return the decrypted array as Object type
*/
@Override
public Object decrypt(Object decryptionKey)
{
String name, address, phone;
String decrypt = ((String) decryptionKey);
for (int i = 0; i < size; ++i) {
// get
name = contacts[i].getName();
address = new String(contacts[i].getAddress());
phone = contacts[i].getPhone();
// decrypt
name = (name.split(decrypt))[1];
address = (address.split(decrypt))[1];
phone = (phone.split(decrypt))[1];
// set
contacts[i].setName(name);
contacts[i].setAddress(address.toCharArray());
contacts[i].setPhone(phone);
}
return this;
}
public static void main(String[] args)
{
MyContacts mc = new MyContacts();
char[] address1 =
{
'S', 'P', 'A', 'R', 'T', 'A'
};
char[] address2 =
{
'A', 'T', 'H', 'E', 'N', 'S'
};
try
{
mc.add(new Contact("Leonidas", address1, "888-123-4577"));
mc.add(new Contact("Pericles", address2, "422-511-1232"));
mc.add(new Contact("Athena", address2, "422-224-1151"));
}
catch (SizeLimitExceededException e)
{
System.err.println("%%%%%%% " + e);
}
System.out.println("Original Contacts\n" + mc);
mc.encrypt("abc");
System.out.println("Encrypted Contacts\n" + mc);
Object o = mc.decrypt("abc");
System.out.println("Decrypted Contacts Using the returned o\n" + o);
}
}
public interface Scramble
{
/** Encrypts an object by using the parameter.
*
* @param key the key to use as encryption key
* @return the object encrypted
*/
Object encrypt( Object key);
/** Decrypts an object by using the decryption key
*
* @param decryptionKey the key to use as decryption key
* @return the object decrypted
*/
Object decrypt( Object key);
}
public class Contact implements Comparable<Contact>, Cloneable{
private String name;
private char[] address;
private String phone;
public Contact(String name, char[] address, String phone) {
this.name = name;
// Create a new address object.
this.address = Arrays.copyOf(address, address.length);
this.phone = phone;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char[] getAddress() {
return address;
}
public void setAddress(char[] address) {
// Create a new address object.
this.address = Arrays.copyOf(address, address.length);
}
@Override
public String toString() {
return "Contract{" + "name=" + name + ", address=" + new String(address) + ", phone=" + phone + '}';
}
@Override
public int compareTo(Contact o) { // I know this isn't the correct way of obtaining these values, I'm unsure of the correct solution.
int difference = 0;
difference += this.name.compareTo(o.name);
difference += this.address.toString().compareTo(o.address.toString());
difference += this.phone.compareTo(o.phone);
return difference;
}
@Override
protected Object clone() {
// Create new objects.
String newName = new String(name);
char[] newAddress = Arrays.copyOf(address, address.length);
String newPhone = new String(phone);
return new Contact(newName, newAddress, newPhone);
}
}

View File

@@ -0,0 +1,139 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package problem2;
import java.util.Arrays;
import javax.naming.SizeLimitExceededException;
/**
*
* @author ar114
*/
public class MyContacts implements Scramble
{
private Contact[] contacts;
private int size;
public final static int CAPACITY = 2;
/**
* Adds a new contact.
*
* @param c the contact to be added
* @throws SizeLimitExceededException if we exceed the MyContacts.CAPACITY
*/
public void add(Contact c) throws SizeLimitExceededException
{
if (this.size != CAPACITY) {
contacts[size] = c;
} else {
throw new SizeLimitExceededException("Capacity Exceeded!");
}
size++;
}
public MyContacts()
{
contacts = new Contact[CAPACITY];
}
@Override
public String toString()
{
String s = "";
for (int i = 0; i < this.size; ++i)
{
s += contacts[i].toString() + "\n";
}
return s;
}
/**
* Encrypts by adding the encyptionKey(String) parameter in the front of every
* property of every contact in the array .
*
* @param encyptionKey the object to be added as String to the front of
* every property of the Contact.
* @return the encrypted array as Object type
*/
@Override
public Object encrypt(Object encyptionKey)
{
for (int i = 0; i < size; ++i)
{
contacts[i].setName(encyptionKey.toString() + contacts[i].getName());
contacts[i].setAddress((encyptionKey.toString() + new String(contacts[i].getAddress())).toCharArray()
);
contacts[i].setPhone(encyptionKey.toString() + contacts[i].getPhone());
}
return this;
}
/**
* Decrypts by removing the encyptionKey parameter from the front of every
* property of every contact in the array.
*
* @param decryptionKey the object(String) to be removed from the front of
* every property of the Contact in the array.
* @return the decrypted array as Object type
*/
@Override
public Object decrypt(Object decryptionKey)
{
String name, address, phone;
String decrypt = ((String) decryptionKey);
for (int i = 0; i < size; ++i) {
// get
name = contacts[i].getName();
address = new String(contacts[i].getAddress());
phone = contacts[i].getPhone();
// decrypt
name = (name.split(decrypt))[1];
address = (address.split(decrypt))[1];
phone = (phone.split(decrypt))[1];
// set
contacts[i].setName(name);
contacts[i].setAddress(address.toCharArray());
contacts[i].setPhone(phone);
}
return this;
}
public static void main(String[] args)
{
MyContacts mc = new MyContacts();
char[] address1 =
{
'S', 'P', 'A', 'R', 'T', 'A'
};
char[] address2 =
{
'A', 'T', 'H', 'E', 'N', 'S'
};
try
{
mc.add(new Contact("Leonidas", address1, "888-123-4577"));
mc.add(new Contact("Pericles", address2, "422-511-1232"));
mc.add(new Contact("Athena", address2, "422-224-1151"));
}
catch (SizeLimitExceededException e)
{
System.err.println("%%%%%%% " + e);
}
System.out.println("Original Contacts\n" + mc);
mc.encrypt("abc");
System.out.println("Encrypted Contacts\n" + mc);
Object o = mc.decrypt("abc");
System.out.println("Decrypted Contacts Using the returned o\n" + o);
}
}

View File

@@ -0,0 +1,29 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package problem2;
/**
*
* @author ar114
*/
public interface Scramble
{
/** Encrypts an object by using the parameter.
*
* @param key the key to use as encryption key
* @return the object encrypted
*/
Object encrypt( Object key);
/** Decrypts an object by using the decryption key
*
* @param decryptionKey the key to use as decryption key
* @return the object decrypted
*/
Object decrypt( Object key);
}

View File

@@ -0,0 +1,22 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package programmingexam2_calebfontenot;
/**
*
* @author ar114
*/
public class ProgrammingExam2_CalebFontenot {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Object[] objArr = new Object[100];
System.out.println(objArr[0]);
}
}