From 79fceceb0260d11e7d634f11b058fcc6794f3453 Mon Sep 17 00:00:00 2001 From: twentyNineAs Date: Thu, 23 Oct 2025 11:36:53 -0400 Subject: [PATCH] Completed Part 3 Added both the kernel and enhanced interface in src/components/logicgates --- CHANGELOG.md | 2 +- .../03-component-interfaces.md | 8 +-- .../interfaceHiearchy.png | Bin 0 -> 80106 bytes src/LogicGates.java | 6 -- src/LogicGatesKernel.java | 8 --- src/components/logicgates/LogicGates.java | 37 +++++++++++ .../logicgates/LogicGatesKernel.java | 59 ++++++++++++++++++ 7 files changed, 98 insertions(+), 22 deletions(-) create mode 100644 doc/03-component-interfaces/interfaceHiearchy.png delete mode 100644 src/LogicGates.java delete mode 100644 src/LogicGatesKernel.java create mode 100644 src/components/logicgates/LogicGates.java create mode 100644 src/components/logicgates/LogicGatesKernel.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 1704bc9..765e7e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ the following form: YYYY.0M.0D. ### Updated -- Changed design to better model complex logical gate sequences by implementing design choices similar to binary trees. +- Changed design to better model complex logic gate sequences through binary tree structures. ## 2025.10.17 diff --git a/doc/03-component-interfaces/03-component-interfaces.md b/doc/03-component-interfaces/03-component-interfaces.md index 4156c6b..65e1a21 100644 --- a/doc/03-component-interfaces/03-component-interfaces.md +++ b/doc/03-component-interfaces/03-component-interfaces.md @@ -130,7 +130,7 @@ hierarchy diagram using whatever tools you would like. Then, include a picture of it in this folder. You may also embed it just below using markdown syntax (i.e., `![ALT TEXT](path/to/file)`). - +![logicGatesHieracrchy](interfaceHiearchy.png) To start making your interfaces, make a branch off of main in your new repo called something like `interfaces`. There are many ways to do this, but my @@ -152,8 +152,6 @@ to see them. If you don't like this workflow, you may try following the rebase strategies described [here](https://stackoverflow.com/questions/35790561/working-while-waiting-for-pending-pr) and [here](https://stackoverflow.com/questions/18021888/continue-working-on-a-git-branch-after-making-a-pull-request). - - ## Assignment Tasks Your primary task for this assignment is to draft two interfaces in line with @@ -208,8 +206,6 @@ request merge (or at least tag your commits). This is not required. ### Submission - - Assuming that your project is in a GitHub repo somewhere and your changes are on a proof-of-concept branch, then what we'll want you to do is create a pull request of all your changes. Pull requests are pretty easy to make if you're @@ -258,8 +254,6 @@ If you'd like to give feedback for this assignment (or any assignment, really), make use of [this survey][survey]. Your feedback helps make assignments better for future students. - - [natural-number-kernel]: https://web.cse.ohio-state.edu/software/common/doc/src-html/components/naturalnumber/NaturalNumberKernel.html [natural-number]: https://web.cse.ohio-state.edu/software/common/doc/src-html/components/naturalnumber/NaturalNumber.html [survey]: https://forms.gle/dumXHo6A4Enucdkq9 diff --git a/doc/03-component-interfaces/interfaceHiearchy.png b/doc/03-component-interfaces/interfaceHiearchy.png new file mode 100644 index 0000000000000000000000000000000000000000..0e0ca08c77521674b336753dc81744a80ef48215 GIT binary patch literal 80106 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

be}v_jwbOR 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πXXaFAtvHKHPhx3ta>9L9+5J(FG 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 literal 0 HcmV?d00001 diff --git a/src/LogicGates.java b/src/LogicGates.java deleted file mode 100644 index c2ee57e..0000000 --- a/src/LogicGates.java +++ /dev/null @@ -1,6 +0,0 @@ -/** - * {@code LogicGatesKernel} enhanced with secondary methods. - */ -public interface LogicGates extends LogicGatesKernel { - -} diff --git a/src/LogicGatesKernel.java b/src/LogicGatesKernel.java deleted file mode 100644 index 63e630b..0000000 --- a/src/LogicGatesKernel.java +++ /dev/null @@ -1,8 +0,0 @@ -import components.standard.Standard; - -/** - * Logic Gates kernel component with its primary methods. - */ -public interface LogicGatesKernel extends Standard { - -} diff --git a/src/components/logicgates/LogicGates.java b/src/components/logicgates/LogicGates.java new file mode 100644 index 0000000..6de02e4 --- /dev/null +++ b/src/components/logicgates/LogicGates.java @@ -0,0 +1,37 @@ +package components.logicgates; + +/** + * {@code LogicGatesKernel} enhanced with secondary methods. + */ +public interface LogicGates extends LogicGatesKernel { + + /** + * Reports the operator of {@code this}. + * + * @return the operator of {@code this} + * @requires this \= empty + * @ensures this = compose(operator, left, right) + */ + String operator(); + + /** + * Replaces the operator of {@code this} with {@code op}, and returns the + * old operator. + * + * @param op + * the new operator + * @return the old operator + * @requires this \= empty + * @ensures (this = compose(op, left, right) and #this = + * compose(replaceOperator, left, right)) + */ + String replaceOperator(String op); + + /** + * Returns the height of {@code this}. + * + * @return the height + * @ensures height = ht(this) + */ + int height(); +} diff --git a/src/components/logicgates/LogicGatesKernel.java b/src/components/logicgates/LogicGatesKernel.java new file mode 100644 index 0000000..2a7d7a6 --- /dev/null +++ b/src/components/logicgates/LogicGatesKernel.java @@ -0,0 +1,59 @@ +package components.logicgates; + +import components.standard.Standard; + +/** + * Logic Gates kernel component with its primary methods. + */ +public interface LogicGatesKernel extends Standard { + + /** + * Assembles in {@code this} a logic gate {@code operator} and input values + * {@code first} and {@code second}. + * + * @param operator + * the logical operator + * @param first + * the first input value + * @param second + * the second input value + * @requires operation to be equal to one of the following operators: {AND; + * OR; NAND; NOR; XOR; NEG} + * @replaces this + * @ensures this = compose(operator, first, second); + */ + void assemble(String operator, boolean first, boolean second); + + /** + * Disassembles {@code this} into the logic gate {@code operator}, which is + * returned as the value of the function, and input values {@code first} and + * {@code second}. + * + * @param first + * the first input value + * @param second + * the second input value + * @return logical operator + * @replaces left, right + * @requires this /= empty + * @ensures this = compose(disassemble, first, second); + */ + String disassemble(boolean first, boolean second); + + /** + * Computes the final boolean value for the entirety of {@code this}, and + * returns said boolean. + * + * @return the final boolean value + * @ensures compute = compute(first) operator compute(second) + */ + boolean compute(); + + /** + * Returns the size of {@code this}. + * + * @return the size + * @ensures size = |this| + */ + int size(); +}