-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit e7cc59f
Showing
13 changed files
with
429 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
*.iml | ||
.gradle | ||
.idea | ||
/local.properties | ||
/.idea/caches | ||
/.idea/libraries | ||
/.idea/modules.xml | ||
/.idea/workspace.xml | ||
/.idea/navEditor.xml | ||
/.idea/assetWizardSettings.xml | ||
.DS_Store | ||
/build | ||
/captures | ||
.externalNativeBuild |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
# CSCI 380-04: Assignment 1 - Due by 11:59 PM, Feb 19th, 2019 | ||
* * * | ||
|
||
This assignment is meant to introduce you to git, Android Studio, and Java fundamentals. | ||
Complete each part of the assignment as separate git commits. Any assignment that's completed, | ||
but uses only one giant commit will have 10% taken off. If you don't already have | ||
Android Studio and git set up on your computer, follow the instructions here before continuing: | ||
- https://developer.android.com/training/basics/firstapp/ | ||
- https://git-scm.com/book/en/v2/Getting-Started-Installing-Git | ||
# Part 0 - Reading | ||
Read the following before attempting this assignment. Make sure to follow the naming convention below in | ||
your assignments. You will be deducted 1% for each naming convention violation. | ||
+ [https://leanpub.com/aprimeronjava/read](https://leanpub.com/aprimeronjava/read) | ||
+ [https://google.github.io/styleguide/javaguide.html#s5-naming](https://google.github.io/styleguide/javaguide.html#s5-naming) | ||
|
||
# Part 1 - Github Setup - 5% | ||
+ Create a Github account | ||
+ Once your Github account is created, make sure to authenticate with an SSH key (see [https://help.github.com/articles/connecting-to-github-with-ssh/](https://help.github.com/articles/connecting-to-github-with-ssh/)). | ||
+ Create a new **private repo** called `assignment1` on your personal Github account (see [https://help.github.com/articles/creating-a-new-repository/](https://help.github.com/articles/creating-a-new-repository/)). Don't initialize with a readme, since you'll just be importing this | ||
existing project to your new repo. | ||
+ In terminal, cd into a directory where you'd like to keep your projects. | ||
+ Clone this repo using the following command: | ||
+ `git clone https://github.com/bhargman/assignment1.git` | ||
+ Once your repo is cloned, `cd` into it using terminal, and use the following commands to set the remote to your new repo and push your project: | ||
+ `git remote set-url origin [email protected]:[yourGithubUserName]/assignment1.git` | ||
+ `git push -u origin master` | ||
+ Add me as a collaborator (username : `bhargman`) to your private repo (see [https://help.github.com/articles/inviting-collaborators-to-a-personal-repository/](https://help.github.com/articles/inviting-collaborators-to-a-personal-repository/)). | ||
+ **If you don't do this step, I'll have no way of grading your assignment** | ||
|
||
# Part 2 - Android Studio - 5% | ||
+ Import your `assignment1` repo into Android Studio | ||
+ In the main Android Studio window, tap on "Open an existing Android Studio project" | ||
+ Browse to your `assignment` folder and select to open it | ||
+ Android Studio will now load the project and you should be able to do the rest of this assignment | ||
|
||
# Part 3 - Primitives - 10% | ||
Update `Primitives.java` to include the following: | ||
+ `private` fields for every type of primitive. | ||
+ Constructor with parameters to initialize every primitive field. | ||
+ Update the `print()` method in `Primitives.java` that will print each primitive value on a new line, with the format `"variableName : value"` | ||
+ Add a main method to `Primitives.java` that creates an instance of `Primitives` with name `primitives`, and calls `primitives.print()`. | ||
|
||
# Part 4 - Arrays - 30 % | ||
+ Update the constructor in `Arrays.java` to initialize the `squares` array with the first 10 *even* squares (exclude 0). | ||
+ Update the `printSquaresBackward()` method in `Arrays.java` to print each value of the `squares` array in backwards order. | ||
+ Add a main method to `Arrays.java` that creates an instance of `Arrays` with name `arrays`, and calls `primitives.printSquares()`. | ||
|
||
# Part 5 - Classes - 50% | ||
+ Create a new `package` in `com.csci38004.assignment` called `shapes`. | ||
+ All work for this part should be done in the `shapes` package. | ||
+ Create a new `interface` called `Shape`. | ||
+ Add `double area()` and ` double perimter()` methods to the `Shape` interface. | ||
+ Create two classes called `Circle` and `Rectangle` which implement `Shape`. | ||
+ Add reasonable fields to the `Circle` and `Rectangle` classes which will allow you to calculate the area and perimeter of each shape. | ||
+ Add constructors to `Circle` and `Rectangle` so you can initialize your fields. | ||
+ Implement the `area()` and `perimeter()` methods for `Circle` and `Rectangle`. | ||
+ Create an interface called `Shape3D`. | ||
+ Add `double volume()` method to `Shape3D`. | ||
+ Create a class called `Cyclinder` which extends `Circle` and implements `Shape3D`. | ||
+ Add and initialize any required fields that you may need to calculate a cylinder's volume. | ||
+ Keep in mind that the `Cylinder` class will have access to its parent (`Circle`) class' methods. Use this to your advantage to implement the `volume()` method. | ||
+ Create a class named `ShapeRunner` with the following main method: | ||
``` | ||
public static void main(String[] args) { | ||
Shape circle = new Circle(2.0); | ||
Shape rectangle = new Rectangle(4.0, 2.0); | ||
Shape3D cylinder = new Cylinder(4.0, 1.0); | ||
System.out.println("Circle:"); | ||
System.out.println("Area: " + circle.area() + ". Perimeter: " + circle.perimeter()); | ||
System.out.println("\nRectangle:"); | ||
System.out.println("Area: " + rectangle.area() + ". Perimeter: " + rectangle.perimeter()); | ||
System.out.println("\nCylinder:"); | ||
System.out.println("Volume: " + cylinder.volume()); | ||
} | ||
``` | ||
+ Notice how the shapes are declared with their interfaces instead of their concrete types. This allows for more flexibility when | ||
trying to extend an application, but also makes sure that you are able to only access methods on the interface's contract. Feel free | ||
to play around with different values to test your implementations, but when submitting your final assignment, make sure to leave this | ||
`main()` method as written here. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// Top-level build file where you can add configuration options common to all sub-projects/modules. | ||
|
||
buildscript { | ||
repositories { | ||
google() | ||
jcenter() | ||
|
||
} | ||
dependencies { | ||
classpath 'com.android.tools.build:gradle:3.3.0' | ||
|
||
// NOTE: Do not place your application dependencies here; they belong | ||
// in the individual module build.gradle files | ||
} | ||
} | ||
|
||
allprojects { | ||
repositories { | ||
google() | ||
jcenter() | ||
|
||
} | ||
} | ||
|
||
task clean(type: Delete) { | ||
delete rootProject.buildDir | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Project-wide Gradle settings. | ||
# IDE (e.g. Android Studio) users: | ||
# Gradle settings configured through the IDE *will override* | ||
# any settings specified in this file. | ||
# For more details on how to configure your build environment visit | ||
# http://www.gradle.org/docs/current/userguide/build_environment.html | ||
# Specifies the JVM arguments used for the daemon process. | ||
# The setting is particularly useful for tweaking memory settings. | ||
org.gradle.jvmargs=-Xmx1536m | ||
# When configured, Gradle will run in incubating parallel mode. | ||
# This option should only be used with decoupled projects. More details, visit | ||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects | ||
# org.gradle.parallel=true | ||
|
||
|
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#Mon Jan 21 14:53:23 EST 2019 | ||
distributionBase=GRADLE_USER_HOME | ||
distributionPath=wrapper/dists | ||
zipStoreBase=GRADLE_USER_HOME | ||
zipStorePath=wrapper/dists | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
#!/usr/bin/env sh | ||
|
||
############################################################################## | ||
## | ||
## Gradle start up script for UN*X | ||
## | ||
############################################################################## | ||
|
||
# Attempt to set APP_HOME | ||
# Resolve links: $0 may be a link | ||
PRG="$0" | ||
# Need this for relative symlinks. | ||
while [ -h "$PRG" ] ; do | ||
ls=`ls -ld "$PRG"` | ||
link=`expr "$ls" : '.*-> \(.*\)$'` | ||
if expr "$link" : '/.*' > /dev/null; then | ||
PRG="$link" | ||
else | ||
PRG=`dirname "$PRG"`"/$link" | ||
fi | ||
done | ||
SAVED="`pwd`" | ||
cd "`dirname \"$PRG\"`/" >/dev/null | ||
APP_HOME="`pwd -P`" | ||
cd "$SAVED" >/dev/null | ||
|
||
APP_NAME="Gradle" | ||
APP_BASE_NAME=`basename "$0"` | ||
|
||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
DEFAULT_JVM_OPTS="" | ||
|
||
# Use the maximum available, or set MAX_FD != -1 to use that value. | ||
MAX_FD="maximum" | ||
|
||
warn () { | ||
echo "$*" | ||
} | ||
|
||
die () { | ||
echo | ||
echo "$*" | ||
echo | ||
exit 1 | ||
} | ||
|
||
# OS specific support (must be 'true' or 'false'). | ||
cygwin=false | ||
msys=false | ||
darwin=false | ||
nonstop=false | ||
case "`uname`" in | ||
CYGWIN* ) | ||
cygwin=true | ||
;; | ||
Darwin* ) | ||
darwin=true | ||
;; | ||
MINGW* ) | ||
msys=true | ||
;; | ||
NONSTOP* ) | ||
nonstop=true | ||
;; | ||
esac | ||
|
||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||
|
||
# Determine the Java command to use to start the JVM. | ||
if [ -n "$JAVA_HOME" ] ; then | ||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
# IBM's JDK on AIX uses strange locations for the executables | ||
JAVACMD="$JAVA_HOME/jre/sh/java" | ||
else | ||
JAVACMD="$JAVA_HOME/bin/java" | ||
fi | ||
if [ ! -x "$JAVACMD" ] ; then | ||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||
Please set the JAVA_HOME variable in your environment to match the | ||
location of your Java installation." | ||
fi | ||
else | ||
JAVACMD="java" | ||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
Please set the JAVA_HOME variable in your environment to match the | ||
location of your Java installation." | ||
fi | ||
|
||
# Increase the maximum file descriptors if we can. | ||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then | ||
MAX_FD_LIMIT=`ulimit -H -n` | ||
if [ $? -eq 0 ] ; then | ||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | ||
MAX_FD="$MAX_FD_LIMIT" | ||
fi | ||
ulimit -n $MAX_FD | ||
if [ $? -ne 0 ] ; then | ||
warn "Could not set maximum file descriptor limit: $MAX_FD" | ||
fi | ||
else | ||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | ||
fi | ||
fi | ||
|
||
# For Darwin, add options to specify how the application appears in the dock | ||
if $darwin; then | ||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||
fi | ||
|
||
# For Cygwin, switch paths to Windows format before running java | ||
if $cygwin ; then | ||
APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||
JAVACMD=`cygpath --unix "$JAVACMD"` | ||
|
||
# We build the pattern for arguments to be converted via cygpath | ||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||
SEP="" | ||
for dir in $ROOTDIRSRAW ; do | ||
ROOTDIRS="$ROOTDIRS$SEP$dir" | ||
SEP="|" | ||
done | ||
OURCYGPATTERN="(^($ROOTDIRS))" | ||
# Add a user-defined pattern to the cygpath arguments | ||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then | ||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | ||
fi | ||
# Now convert the arguments - kludge to limit ourselves to /bin/sh | ||
i=0 | ||
for arg in "$@" ; do | ||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option | ||
|
||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition | ||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | ||
else | ||
eval `echo args$i`="\"$arg\"" | ||
fi | ||
i=$((i+1)) | ||
done | ||
case $i in | ||
(0) set -- ;; | ||
(1) set -- "$args0" ;; | ||
(2) set -- "$args0" "$args1" ;; | ||
(3) set -- "$args0" "$args1" "$args2" ;; | ||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||
esac | ||
fi | ||
|
||
# Escape application args | ||
save () { | ||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done | ||
echo " " | ||
} | ||
APP_ARGS=$(save "$@") | ||
|
||
# Collect all arguments for the java command, following the shell quoting and substitution rules | ||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" | ||
|
||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong | ||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then | ||
cd "$(dirname "$0")" | ||
fi | ||
|
||
exec "$JAVACMD" "$@" |
Oops, something went wrong.