Code Monkey home page Code Monkey logo

landlord_ruby_no_ar's Introduction

Landlord - Ruby Enums edition!

OH NOES, A up and coming property manager, Bob Pizza has too much data now and is having trouble managing it all. He wants US to build him a sick new app. But before he just pays us money he wants to see our chops with ruby enumerables...

Part 1 Practice With enumerables

Read the comments in app.rb to follow the directions practicing enumerables

Store the enumerable methods into variables and use puts to verify the results of your methods

Part 2 Build the App

Comment out any functional code in app.rb, but save it, you can leverage the code from Part 1 to write out parts of this application.

Bob Pizza is old school, and he wants a sick command line interface for this app. Bob's user stories:

MVP:

- I should have a numbered interface for my application so that I can just type in a number to access different parts of my program.
- I should be allowed an option to view all the apartments so that I can get an overview of my properties.
- I should be allowed  an option view all the tenants so that I can get an overview of my tenants

Silver:

- I should be allowed an option to view all the apartments with their tenants so that I can get an overview of Occupancy.
- I should be able to find where a tenant lives based on tenant name in case of emergencies.

Gold:

- I should be allowed to remove a tenant from an apartment so that I can track evictions/lease ends
- I should be allowed to add a tenant to an apartment so that I can track occupancy.
- I should be allowed to create a new apartment so that I can track new properties in my books
- I should be allowed to create a new tenant so that I can track new tenants in my books.

Part 3 - Refactor Using Ruby Classes

Bob Pizza likes what you built. But he looks at your code and wants a custom made object to represent your tenants and apartments.

Step 1 - Defining our models.

Create a models folder. In this folder, create two files apartment.rb and tenant.rb.

Link these two files in the app.rb:

require_relative "models/apartment"
require_relative "models/tenant"

In the two files, create class definitions for an apartment and a tenant:

In models/apartment.rb:

class Apartment
  # Place your code here
end  

In models/tenant.rb:

class Apartment
  # Place your code here
end  

Make sure all your instance variables(attributes) are accessible within the instances of your class through getter and setters methods.

Step 2 - Converting existing data into instances of the classes we've defined in Step 1.

Here's some starter code:

require_relative "data"
require_relative "models/apartment"
require_relative "models/tenant"
apartments = data[:apartments]
tenants = data[:tenants]
ruby_apartments = []
ruby_tenants = []

We're going to use the variables ruby_apartments and ruby_tenants to differentiate between the original arrays(apartments and tenants) and the arrays we'll be putting our ruby class objects into.

Using the .each enumerable, loop through the exisiting apartments and tenants arrays we worked with yesterday.

In the loops

  • create a new instance of a class you've defined
  • push that new instance into the corresponding ruby array.

We can also instead use the .map enumerable to condense the above code that uses .each.

Step 3 - Convert to using ruby classes

Take all of the code you wrote in Part 1(thursday's hw). Replace all variables of apartments with ruby_apartments and all tenants with ruby_tenants

Most likely, all of the code broke when converting these variables. That's because we we're using the hash syntax during thursday nights HW. Convert the enumerables you wrote for Part 1 of this assignment. The enumerables should now use the getter methods you defined earlier.

Instructors will check the comments of app.rb for these lines of code similar to Part 1 of thursday's homework.

Step 4 - Convert the rest of your app

Convert however far you got with your CLI application into using Ruby Class Objects instead of hashes.

BONUS -

Create a class method .all for Tenant and/or Apartment. When called on the class it will return all of the instances that have been created through this class

DO MOAR

Complete all features.

If you've completed all the above features. Add more! Be creative!

landlord_ruby_no_ar's People

Contributors

andrewsunglaekim avatar ejsorrento avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.