Difference between revisions of "Render Part D Assignment"

From CSE425S Wiki
Jump to navigation Jump to search
Line 24: Line 24:
 
  <code>include Composite</code>
 
  <code>include Composite</code>
  
Warning: Do '''NOT''' use the <code>include</code> keyword in Ruby as you would typically in C or C++.  Be sure to include within the intended class definition.  If you include outside of the class at the top-level, it will mixin Composite into Object. This may or may not rip a hole in the universe.
+
[[File:Warning_icon.svg|100px]] Warning: Do '''NOT''' use the <code>include</code> keyword in Ruby as you would typically in C or C++.  Be sure to include within the intended class or module definition.  If you <code>include</code> at the top-level, it will mixin to <code>Object</code>! This may or may not rip a hole in the universe.
  
 
==Scene==
 
==Scene==

Revision as of 04:44, 8 December 2020

In this studio we will evolve our code from Render_Part_C_Assignment to leverage mixins.

Render part d class hierarchy.svg

Continue editing files in the render/assignment directory.

Code to Implement

Composite

file: src/main/ruby/render/assignment/composite.rb Ruby logo.svg
module: Composite
methods: initialize_components
push_component(component)
each_component

module Composite should define methods push_component and each_component as well as include the Enumerable module.

push_component

push a component onto an array.

each_component

if a block is given, yield for each component. otherwise return a new Enumerator of the components.

Enumerable

to add a number of useful methods, include the Enumerable module and use alias_method to alias an :each method to the :each_component method.

CompositeTransform

Mixin your Composite module to the CompositeTransform class and clean up existing code.

include Composite

Warning icon.svg Warning: Do NOT use the include keyword in Ruby as you would typically in C or C++. Be sure to include within the intended class or module definition. If you include at the top-level, it will mixin to Object! This may or may not rip a hole in the universe.

Scene

include Composite and clean up existing code.

Testing Your Solution

Unit Test

file: src/test/ruby/render/part_d/part_d_unit_test.rb Ruby logo.svg UnitTest

note: ensure that you have removed all printing to receive credit for any assignment.