Il 09 T3 William Spreitzer

231 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
231
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Il 09 T3 William Spreitzer

  1. 1. William Spreitzer<br />C# .NET Developer – Design Portfolio<br />wspreitzer@comcast.net<br />http://www.linkedin.com/in/wspreitzerilnet<br />(224)234-3453<br />
  2. 2. Business Tier Object Framework – Retail Services<br />Overview:<br />Developed two Business layer assemblies for a Retail Services Company<br /><ul><li>Foundation.dll – Interface and base classes
  3. 3. AppTypes.dll – Various Entity, Collection, and Exception Classes</li></ul>Project requirements included integrating new assemblies into existing framework and verifying functionality using detailed unit-testing. Business objects implemented .NET Framework interfaces and extended .NET base classes whenever possible. To support documentation and maintainability XML Build Documentation and Custom Attributes were utilized.<br />
  4. 4. Key Knowledge Components<br />Object Modeling of Business Entities<br />Customizing Exception and Event Handling<br />Improving Meta-Data using Custom Attributes<br />Unit Testing using System.Reflection namespace<br />Utilizing Strongly-Typed Generic Collections<br />Implementing .NET Framework and Custom Interfaces<br />Extending .NET Framework Base Classes<br />Generating XML Release Build Documentation<br />
  5. 5. Design Approach<br />Create functional business objects easily used by the presentation and data access layers at runtime. <br />Support binary and XML serialization for preserving application state.<br />Custom objects were developed by implementing .NET Base Classes and extending standard .NET Interfaces.<br />Examples are IComparable<T>, IComparer<T> and ISerializable.<br />
  6. 6. Design Approach cont.<br />Enhance object flexibility by providing intuitive operator overloading and overriding base class methods such as Object.GetHashCode().<br />Customized exception classes were built to provide application specific error information and an EventLogger class was developed to register delegates to customized collection modification events. <br />For proper integration and regression analysis, the code was unit-tested during development using test scenarios and runtime reflection.<br />To support future maintainability, code was commented using .NET XML documentation generated on build as well as customized attributes viewable at runtime using reflection or via the MSIL Manifest using ILDASM.exe<br />
  7. 7. Code Sample<br />/// <summary><br /> /// This method takes in a Supplier Object and converts it<br /> /// into a DataAccess.SupplierStruct struct. <br /> /// </summary><br />/// <param name="s"></param><br /> /// <returns></returns><br /> public static explicit operator DataAccess.SupplierStruct(Supplier supplier)<br /> {<br /> string supplierType = "";<br /> switch (supplier.Type)<br /> {<br /> case SupplierTypes.Product:<br />supplierType = "Product";<br /> break;<br /> case SupplierTypes.Service:<br />supplierType = "Service";<br /> break;<br /> case SupplierTypes.Supply:<br />supplierType = "Supply";<br /> break;<br /> default:<br /> throw new ArgumentException("Invalid Type Given");<br />}<br />Cont..<br />
  8. 8. Windows Forms – Library Phase 1<br />Overview:<br />Developed a Windows Forms-based front-end application to support the principal functions of a lending library’s day-to-day operations including adding new members and checking books in and out. The front-end interfaces with a SQL Server Database via existing Data Access Layer assemblies. General requirements and provisions are as follows:<br /><ul><li>Develop easily maintainable code that makes efficient use of database resources
  9. 9. Provide sophisticated front-end validation logic to ensure data-integrity
  10. 10. Construct an intuitive, functional interface which requires minimal training for users</li></li></ul><li>Key Knowledge Components<br />Designing intuitive non-modal user-interface under ambiguous design guidelines<br />Validating complex input using Regular Expressions<br />Providing user input feedback via error providers<br />Incorporating existing n-tier architecture for scalability<br />Developing effective exception and error handling<br />Binding of GridView controls at runtime to data source<br />Segregating presentation logic from business rules by creating middle-tier Business layer<br />
  11. 11. Design Approach<br />Windows Forms was chosen to facilitate a functional UI with low cost of training and minimal development time.<br />The UI was organized based on the design requirements set forth by the stakeholders.<br />The front-end uses menus to represent the discrete actions required by the application with a global search function for pulling and viewing information on members. <br />An intermediate business layer was developed to enforce business rules and directly invoke data access layer components. <br />
  12. 12. Design Approach cont.<br />To prevent unsafe trips to the database with malformed data all user input is validated as focus leaves the control, providing immediate feedback using error providers. <br />Business and database logic are thrown at underlying layers and are handled by the front-end when the user submits the information, and then are presented to the user in a meaningful non-technical format. <br />
  13. 13. Code Sample<br />private void checkInButton_Click<br /> (object sender, EventArgs e)<br /> {<br /> try<br /> {<br /> DialogResult dr = CheckCheckIn();<br /> if(dr.Equals(DialogResult.Yes))<br /> {<br /> bl.CheckIn(int.Parse<br /> (isbnTextBox.Text), short.Parse<br /> (copyTextBox.Text));<br /> }<br /> }<br /> catch(LibraryException)<br /> {<br /> errorLabel.Visible = true;<br /> errorLabel.Text= "Item is not checked"+<br /> " out";<br /> }<br />Cont…<br />
  14. 14. Switchboard Screen Shot<br />This is the switchboard form. It is the main form of the application and all other forms are accessed through this form.<br />
  15. 15. Add Adult Member <br />The Add Adult Member form adds an adult member to the library application’s database. It also has menus to access other forms. It also has a check out button to let the librarian to check out a book using a newly added member.<br />
  16. 16. Add Juvenile Member<br />The Add Juvenile Member form add a juvenile member to the library application’s database. In order to add a juvenile member they must have a valid adult sponsor. <br />
  17. 17. Member Information<br />The Member Information form allows the user to search for a member by their Member ID. The member’s information is then displayed and the books they have checked out are displayed on the bottom. <br />
  18. 18. Check In <br />The Check In form allows the user to check in an item.<br />
  19. 19. Checkout<br />The Checkout form allows the user to checkout an item using the member’s id, ISBN and copy numbers.<br />

×