Skip to content

Commit

Permalink
New override polymorphism jam
Browse files Browse the repository at this point in the history
  • Loading branch information
joantolos committed Jul 14, 2021
1 parent 3a3cfc3 commit 006e665
Show file tree
Hide file tree
Showing 41 changed files with 7,706 additions and 0 deletions.
198 changes: 198 additions & 0 deletions override-polymorphism/.eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
{
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module"
},
"env": {
"node": true
},
"rules": {
"comma-dangle": [2,"never"],
"no-cond-assign": 2,
"no-constant-condition": 2,
"no-control-regex": 0,
"no-debugger": 0,
"no-dupe-args": 0,
"no-dupe-keys": 0,
"no-duplicate-case": 2,
"no-empty-character-class": 0,
"no-empty": 2,
"no-ex-assign": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": [2, "all", {
"conditionalAssign": false,
"returnAssign": false,
"nestedBinaryExpressions": false
}],
"no-extra-semi": 2,
"no-func-assign": 2,
"no-inner-declarations": 2,
"no-invalid-regexp": 0,
"no-irregular-whitespace": 2,
"no-negated-in-lhs": 2,
"no-obj-calls": 0,
"no-regex-spaces": 0,
"no-sparse-arrays": 2,
"no-unreachable": 2,
"use-isnan": 2,
"valid-jsdoc": 0,
"valid-typeof": 0,
"no-unexpected-multiline": 0,
"accessor-pairs": 2,
"block-scoped-var": 2,
"complexity": 2,
"consistent-return": 0,
"curly": 2,
"default-case": 2,
"dot-notation": 2,
"dot-location": 0,
"eqeqeq": [2,"allow-null"],
"guard-for-in": 0,
"no-alert": 0,
"no-caller": 0,
"no-div-regex": 0,
"no-else-return": 0,
"no-empty-label": 0,
"no-eq-null": 0,
"no-eval": 2,
"no-extend-native": 0,
"no-extra-bind": 2,
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-implicit-coercion": [2,{"number":true,"string":true,"boolean":false}],
"no-implied-eval": 2,
"no-invalid-this": 0,
"no-iterator": 2,
"no-labels": 0,
"no-lone-blocks": 0,
"no-loop-func": 2,
"no-multi-spaces": 2,
"no-multi-str": 0,
"no-native-reassign": 0,
"no-new-func": 0,
"no-new-wrappers": 2,
"no-new": 2,
"no-octal-escape": 0,
"no-octal": 0,
"no-param-reassign": 0,
"no-process-env": 0,
"no-proto": 0,
"no-redeclare": 2,
"no-return-assign": 0,
"no-script-url": 0,
"no-self-compare": 0,
"no-sequences": 0,
"no-throw-literal": 2,
"no-unused-expressions": 0,
"no-useless-call": 0,
"no-void": 0,
"no-warning-comments": [1,{"terms":["todo"," fixme"," TODO"," FIXME"],"location":"anywhere"}],
"no-with": 0,
"radix": 2,
"vars-on-top": 2,
"wrap-iife": [2,"inside"],
"yoda": 0,
"strict": [2,"global"],
"init-declarations": 0,
"no-catch-shadow": 2,
"no-delete-var": 2,
"no-label-var": 0,
"no-shadow-restricted-names": 0,
"no-shadow": 0,
"no-undef-init": 0,
"no-undef": 0,
"no-undefined": 0,
"no-unused-vars": 2,
"no-use-before-define": 0,
"callback-return": 0,
"handle-callback-err": 2,
"no-mixed-requires": 0,
"no-new-require": 0,
"no-path-concat": 2,
"no-restricted-modules": 0,
"no-sync": 0,
"array-bracket-spacing": 2,
"brace-style": [2,"1tbs",{"allowSingleLine":true}],
"camelcase": 2,
"comma-spacing": 2,
"comma-style": [2,"last"],
"computed-property-spacing": 0,
"consistent-this": [0, "self", "that"],
"eol-last": 0,
"func-names": 0,
"func-style": 0,
"id-length": 0,
"indent": [2, 2, {
"VariableDeclarator": 1,
"SwitchCase": 1
}],
"key-spacing": [2,{"beforeColon":false,"afterColon":true}],
"lines-around-comment": 0,
"linebreak-style": 0,
"max-nested-callbacks": [2, {"maximum":8}],
"new-cap": 1,
"new-parens": 2,
"newline-after-var": 2,
"no-array-constructor": 2,
"no-continue": 0,
"no-inline-comments": 0,
"no-lonely-if": 0,
"no-mixed-spaces-and-tabs": [2,"smart-tabs"],
"no-multiple-empty-lines": [2,{"max":1}],
"no-nested-ternary": 0,
"no-new-object": 2,
"no-spaced-func": 2,
"no-ternary": 0,
"no-trailing-spaces": 0,
"no-underscore-dangle": [2, { "allowAfterThis": true }],
"no-unneeded-ternary": 2,
"object-curly-spacing": [2,"always",{}],
"one-var": 0,
"operator-assignment": 0,
"operator-linebreak": 0,
"padded-blocks": [2, {"switches":"always"}],
"quote-props": [2, "consistent"],
"quotes": [2,"single","avoid-escape"],
"id-match": 0,
"semi-spacing": [2,{"after":true}],
"semi": [2,"always"],
"sort-vars": 0,
"keyword-spacing": 2,
"space-before-blocks": 2,
"space-before-function-paren": 0,
"space-in-parens": 2,
"space-infix-ops": 2,
"space-return-throw-case": 0,
"space-unary-ops": 0,
"spaced-comment": [2, "always", {
"line": {
"markers": ["/"],
"exceptions": ["-", "+"]
},
"block": {
"markers": ["!"],
"exceptions": ["*"]
}
}],
"wrap-regex": 2,
"arrow-parens": 0,
"arrow-spacing": 0,
"constructor-super": 0,
"generator-star-spacing": 0,
"no-class-assign": 0,
"no-const-assign": 0,
"no-this-before-super": 0,
"no-var": 0,
"object-shorthand": 0,
"prefer-const": 0,
"prefer-spread": 0,
"prefer-reflect": 0,
"require-yield": 0,
"max-depth": [2,4],
"max-len": [2,200,1,{"ignorePattern":"true"}],
"max-params": 0,
"max-statements": 0,
"no-bitwise": [2, { "allow": ["~"] }],
"no-plusplus": 2
}
}
11 changes: 11 additions & 0 deletions override-polymorphism/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/target
/.classpath
/.project
/.settings
/tomcat.*
/.idea
/*.iml
/build
out
.gradle
node_modules
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
11 changes: 11 additions & 0 deletions override-polymorphism/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Override polymorphism and Factory builder pattern

Example of factory builder pattern and overriding polymorphism made on Typescript.

The animal factory will build an instance of "Dog", "Cat" or "Bird" depending on the animal id provided. All three classes implement the interface Animal which has three methods: sound, imitation and summary.

Dog and Cat extend the abstract class Mammal, but Bird does not. For the cases of Dog and Cat, the implementation of "summary" is on the abstract class "Mammal", so they only have to implement "sound" and "imitation". Bird is not a mammal thought, so it has to implement the three methods: summary, sound and imitation.

![Override polymorphism example](./classesDiagramTransparent.png "San Juan Mountains")

This example serves to illustrate the case for Override Polymorphism as the class Mammal has two abstract methods (sound and imitation) that needs to implement the method summary. These abstract methods are override on Cat and Dog classes.
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions override-polymorphism/coverage/clover.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1626259788641" clover="3.2.0">
<project timestamp="1626259788641" name="All files">
<metrics statements="12" coveredstatements="12" conditionals="3" coveredconditionals="3" methods="11" coveredmethods="11" elements="26" coveredelements="26" complexity="0" loc="12" ncloc="12" packages="1" files="5" classes="5">
<file name="animal-factory.ts" path="/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/animal-factory.ts">
<metrics statements="4" coveredstatements="4" conditionals="3" coveredconditionals="3" methods="2" coveredmethods="2"/>
<line num="19" count="3" type="stmt"/>
<line num="21" count="1" type="stmt"/>
<line num="24" count="1" type="stmt"/>
<line num="27" count="1" type="stmt"/>
</file>
<file name="bird.ts" path="/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/bird.ts">
<metrics statements="3" coveredstatements="3" conditionals="0" coveredconditionals="0" methods="3" coveredmethods="3"/>
<line num="6" count="1" type="stmt"/>
<line num="10" count="1" type="stmt"/>
<line num="14" count="1" type="stmt"/>
</file>
<file name="cat.ts" path="/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/cat.ts">
<metrics statements="2" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
<line num="7" count="1" type="stmt"/>
<line num="11" count="1" type="stmt"/>
</file>
<file name="dog.ts" path="/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/dog.ts">
<metrics statements="2" coveredstatements="2" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
<line num="7" count="1" type="stmt"/>
<line num="11" count="1" type="stmt"/>
</file>
<file name="mammal.ts" path="/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/mammal.ts">
<metrics statements="1" coveredstatements="1" conditionals="0" coveredconditionals="0" methods="2" coveredmethods="2"/>
<line num="7" count="2" type="stmt"/>
</file>
</metrics>
</project>
</coverage>
6 changes: 6 additions & 0 deletions override-polymorphism/coverage/coverage-final.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{"/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/animal-factory.ts": {"path":"/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/animal-factory.ts","statementMap":{"0":{"start":{"line":19,"column":4},"end":{"line":29,"column":5}},"1":{"start":{"line":21,"column":8},"end":{"line":21,"column":25}},"2":{"start":{"line":24,"column":8},"end":{"line":24,"column":25}},"3":{"start":{"line":27,"column":8},"end":{"line":27,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":15,"column":2},"end":{"line":null,"column":-1}},"loc":{"start":{"line":15,"column":2},"end":{"line":16,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":9},"end":{"line":18,"column":13}},"loc":{"start":{"line":18,"column":33},"end":{"line":30,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":6},"end":{"line":22,"column":7}},"type":"switch","locations":[{"start":{"line":20,"column":6},"end":{"line":22,"column":7}},{"start":{"line":23,"column":6},"end":{"line":25,"column":7}},{"start":{"line":26,"column":6},"end":{"line":28,"column":7}}]}},"s":{"0":3,"1":1,"2":1,"3":1},"f":{"0":4,"1":3},"b":{"0":[1,1,1]}}
,"/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/bird.ts": {"path":"/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/bird.ts","statementMap":{"0":{"start":{"line":6,"column":4},"end":{"line":6,"column":147}},"1":{"start":{"line":10,"column":4},"end":{"line":10,"column":20}},"2":{"start":{"line":14,"column":4},"end":{"line":14,"column":18}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":2},"end":{"line":5,"column":8}},"loc":{"start":{"line":5,"column":9},"end":{"line":7,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":2},"end":{"line":9,"column":6}},"loc":{"start":{"line":9,"column":7},"end":{"line":11,"column":3}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":2},"end":{"line":13,"column":10}},"loc":{"start":{"line":13,"column":11},"end":{"line":15,"column":3}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{"0":1,"1":1,"2":1},"b":{}}
,"/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/cat.ts": {"path":"/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/cat.ts","statementMap":{"0":{"start":{"line":7,"column":4},"end":{"line":7,"column":19}},"1":{"start":{"line":11,"column":4},"end":{"line":11,"column":18}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":6}},"loc":{"start":{"line":6,"column":7},"end":{"line":8,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":10}},"loc":{"start":{"line":10,"column":11},"end":{"line":12,"column":3}}}},"branchMap":{},"s":{"0":1,"1":1},"f":{"0":1,"1":1},"b":{}}
,"/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/dog.ts": {"path":"/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/dog.ts","statementMap":{"0":{"start":{"line":7,"column":4},"end":{"line":7,"column":18}},"1":{"start":{"line":11,"column":4},"end":{"line":11,"column":18}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":6}},"loc":{"start":{"line":6,"column":7},"end":{"line":8,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":2},"end":{"line":10,"column":10}},"loc":{"start":{"line":10,"column":11},"end":{"line":12,"column":3}}}},"branchMap":{},"s":{"0":1,"1":1},"f":{"0":1,"1":1},"b":{}}
,"/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/mammal.ts": {"path":"/Users/joan/Documents/code/joantolos/kata-code-jam/override-polymorphism/src/mammal.ts","statementMap":{"0":{"start":{"line":7,"column":4},"end":{"line":7,"column":177}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":2},"end":{"line":null,"column":-1}},"loc":{"start":{"line":3,"column":2},"end":{"line":4,"column":3}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":2},"end":{"line":6,"column":8}},"loc":{"start":{"line":6,"column":9},"end":{"line":8,"column":3}}}},"branchMap":{},"s":{"0":2},"f":{"0":6,"1":2},"b":{}}
}
Loading

0 comments on commit 006e665

Please sign in to comment.