Sunday, September 22, 2019
Thesis Enrolment Essay Example for Free
Thesis Enrolment Essay 1.0. Project Description An enrolment system is necessary for the school to keep track of their studentsââ¬â¢ records. This is a useful way for retrieving studentââ¬â¢s information. On the other hand a studentââ¬â¢s personal information account will enable a student to view his or her status and other school related requirements or details. If these two will be implemented automatically, then the school will operate more efficiently and effectively. The purpose of this online enrolment system is for those individuals who want to enrol in Cebu Centre for Dance but they are having the hard time in finding for the exact location of the school and applying an enrolment system through online will make it easier and faster for the enrolees to apply to the said dance school. The enrolee requires filling up a form online with his or her personal information that includes his or her specific details that the system requires. This lets the enrolee choose or enrol to a course offered by the school. Once the enrolee submits the form and formally settles the payment, that enrolee is considered an official student of the school. This marks the use of the studentââ¬â¢s personal information account. So the student could now log in into his account using his unique username and password that would let him view his class schedule and other school related details. An online enrolment system and studentââ¬â¢s personal information account will help school and its students communicate and keep track of their records successfully. And since the widespread use of the internet has given people the chance to access to information and to the different websites, this gives us the idea of creating the system. 1.1. Background of the Project/ Overview of the Current State of Technology Company Background Cebu Centre for Dance is the newest dance school in Cebu City. It is located at Tango Plaza building, Queens Road. It aims is to provide high quality dance training as well as fitness training in the Queen city of the south. It offers ballet dance training for all 3 years and up, adult ballet for fitness, contemporary dance training, classical jazz, and Latin ballroom. For fitness training, it offers Zumba by Emma Satchell, Yoga and Pilates. Companys Current State in terms of Technology The Cebu Centre for Dance has its own existing website, the http://www.cebucentrefordance.webeden.net/. In their website, you can view the details about the dance school, the different courses offered, the list of faculty members, and its dance resources, and on how to contact the said dance training school. The Cebu Centre for Danceââ¬â¢s website lacks some features that would help in making their operation more efficient and more effective towards their students and to those who really want to enrol in the said dance school. So the creation of an online enrolment system and studentââ¬â¢s personal information account would make a difference and improvement in organizing and retrieving studentsââ¬â¢ information. Companys needs/ challenges that needs Technological Intervention The schoolââ¬â¢s website lacks some features that are needed for making their schoolââ¬â¢s operation more effective and more efficient. It needs a system that could retrieve and track the records of their students and enrolees wherein the admin could view the necessary details about them. The school manages their enrolment manually in which itââ¬â¢s not very accessible and convenient for students/enrolees especially in this rapidly changing world. On the other hand, keeping track of the records is also done manually that makes it more complicated and unsecured. So the school is really in need of an automated system for the enrolment and an online account for their studentsââ¬â¢/enroleesââ¬â¢ personal information. Brief Introduction of the Project as the Solution As what was defined in 1.0 Project Description, ââ¬Å"An enrolment system is necessary for the school to keep track of their studentsââ¬â¢ records. This is a useful way for retrieving studentââ¬â¢s information. On the other hand a studentââ¬â¢s personal information account will enable a student to view his or her status and other school related requirements or details. If these two will be implemented automatically, then the school will operate more efficiently and effectively.â⬠This project would really satisfy the needs of the school of having an automated system for their enrolment and an online account for their students. The admin could view and check the record and status of a specific student. He can also alter some information about that student. The enrolees can register by filling up a form online and submits this one to the site to be stored in the database. Once the payment and other confidential matters are being settled, that enrolee could now be considered as an official student of the said dance school. He could then log-in to his personal account to update and view the important details stored in it. 1.2. Project Objectives/ Objectives of the Project The main objective of this project is to develop and come up with an enrolment system that would satisfy the needs of the students and the school wherein the admin can be able to manage the studentââ¬â¢s information account. This project aims to build a working and efficient enrolment system and be implemented online. 1.2.1. General Objective The over-all goal for the creation of this online enrolment system and studentââ¬â¢s personal information account is to transform the manual system of enrolment of the school to an automated one. The purpose for this is for the enrolees to enrol to the school anytime of the day because itââ¬â¢s done online. An online enrolment system will help the school officials to manage and utilize their time properly because the system will be the one working for the enrolment process to be stored in a database. On the other hand, having a studentââ¬â¢s personal information account will help not only the school, but also the student in managing and viewing for their record and important school requirements in convenient way but just logging in to their account. Through this, studentsââ¬â¢ records will be put to the database for security purposes and easy access to information. 1.2.2. Specific Objectives * To develop an automated or online system of enrolment * To create a studentââ¬â¢s personal information account * To make the enrolment system more effective and more efficient for both the school and the enrolees * To let both the school and the students have an easy access to information * To let the admin protect and organize the studentsââ¬â¢ records * To let the admin view the records of their students * To let the admin alter the information stored in the database * To let the enrolees register to the school 24 hours online * To let the students log in to their own personal account * To let the students view and update their account in a more convenient manner * To let the admin post a reminder or note to the studentââ¬â¢s account easier and faster 1.3. Scope and Limitations of the Project The online enrolment system can only let the enrolee fill up the form and submit this one to be stored to the database. In an enrolment process, payment is really necessary before the enrolee to be considered as an official student of the school. It can be a down payment or a full payment depending on the agreement made by the school and the enrolee. But in our online enrolment system, no money transactions are done because the payment will only be done through personal meet ups. In the enrolment system, the school can trace what are the standings and schedules of the students. For the studentââ¬â¢s personal information account, only the official students of the school are allowed to log in to their accounts using their unique usernames and passwords. The enrolees are not allowed to log in to an account because they need to achieve first the necessary requirements to be considered as an official student of the school. The student can only view and update his account. He cannot delete his account because only the admin can do that. The admin can change and manage the information on the studentââ¬â¢s account. The admin can view the records of the studentsââ¬â¢ fees ââ¬â collected or uncollected. The admin can send personal message to the student and post important announcements. 1.4. Significance of the Project/ Importance of the Project The system proposed should be done in a specific period of time so that the Cebu Centre for Dance can now have an automated enrolment system. The school wonââ¬â¢t use anymore the manual system theyââ¬â¢re used to. Itââ¬â¢s a great benefit for both the students and the school because aside from the fact that itââ¬â¢s hassle free and convenient, itââ¬â¢s also user friendly. The purpose for this is for the enrolees to enrol to the school anytime of the day because itââ¬â¢s done online. An online enrolment system will help the school officials to manage and utilize their time properly because the system will be the one working for the enrolment process to be stored in a database. In this rapidly changing world, technology is really a must for everyone especially in schools because the need for it provides us with easy and more effective solutions to everyday living. Without technology we could not communicate quickly from important people we like to talk to, find important information from the Internet, or even keep track school events and announcements. This project allows people to utilise tools that allows overcoming of mental and the practical application of knowledge to advance our everyday life. 2.0. Review of Related Works and Studies/ Review of Related Literature With the advent of computers, the world entered a more technologically advanced era of computing using various technical tools. In the creation of the system, different resources were being used. It includes the Xampp, Dreamweaver, and Adobe Photoshop CS5, the Internet, university-owned computer, personal computers and laptops (Lenovo and Toshiba). The use of some browsers such as Mozilla and Google Chrome made this database project possible. Through these media, we could now successfully create and develop our own database. It is based on SQL or termed as the Structured Query Language that is used for managing and querying databases. Creating the system can become extremely complex and inconsistent, because most of the information canââ¬â¢t be tabulated into simple computer programs, thus the call for a maximum level database was needed and created. 3.0. Project Methodology The creation of an online enrolment system and studentââ¬â¢s personal information account requires specific steps that are needed to be achieved. These are the steps: DESIGN MAINTENANCE and SUPPORT IMPLEMENTATION ANALYSIS PLANNING Data Collection This project involves three major steps starting from planning down to the implementation of the system. PLANNING Software Requirements Analyse the requirements. ANALYSIS Identify the conclusion Implements the system IMPLEMENTATION Tests the system All of the activities stated above will be done by Anna Mae Talingting, and Marjorie Castillo. They are the resource persons to be contacted and are responsible for the task required. The making of the system will approximately take 3 months, which is from November to February. It will be done to a place that has computers and other enough resources that would help make and accomplish the system. The activity should be done so that the school can now have an automated enrolment system and students can use it as soon as possible that the system will be done and implemented.
Saturday, September 21, 2019
The Shawshank Redemption Essay Example for Free
The Shawshank Redemption Essay The following paper will focus on the ethical issues that occurred in the 1994 film Shawshenk Redemption directed by Frank Darabont. Focus will be made on specific scenes that represent clear ethical violations of not only the criminal justice system, but as well as the corrections system here in America during the 1940ââ¬â¢s through the 1960ââ¬â¢s. Several ethical issues involving Andy Dufrense, the main character, arise involving him, his friends (other inmates), the guards, and the warden. Ethical principals of concern and importance identified and portrayed in the film are as follows: financial loop holes for guards, creating false accounts, slave labor, abuse of power, and money laundering, and murder. Shawshenk Redemption focuses around Andy Dufresne, a banker wrongfully convicted of two murders; his wife and her lover in 1947. Andy is sentenced to two consecutive life sentences at Shawshenk Prison, in Maine. Once at the prison Andy becomes best friends with another inmate named Red. Red has been in prison for a long time and is repeatedly denied parole again and again. Chief Guard Bradley is another important character. He is the head guard at the prison who evokes fear in the inmates and frankly treats the inmates like animals. Ultimately the most important character when it comes to the topics of ethics is the Warden at Shawshenk Prison, Samuel Norton. When Andy fist meets the Warden, he tells Andy there are two principals in the prison, the bible and the Warden. ââ¬Å"I believe in two things; discipline and the Bible. Here youââ¬â¢ll receive both. Put your trust in the Lord. Your ass belongs to me. Welcome to Shawshankâ⬠(Warden Samuel Norton). Andy was an accountant before he was falsely convicted and he was able to get respect from the guards and the warden because he was able to give financial advice. The power that he gained by giving financial advice he used for good, not evil. Andy was able to obtain library books for the inmatesââ¬â¢ and build on the prisons library. Andy was an honest, decent man that tried to make life bearable in prison. Andy states in the movie, ââ¬Å"On the outside, I was an honest man, straight as an arrow. I had to come to prison to become a crookâ⬠. Andy was violently beaten and sodomized several times by a group of men in the prison called, The Sisters, before the Chief Guard Bradley and Warden Norton found out about his financial background and frankly the ââ¬Å"worthâ⬠of Andy. Once they were aware of his financial background and how it could benefit them, Chief Guard violently attacked the leader of The Sisters and demanded they never bother Andy again. Andy had protection, and once Andy realized this, he then began to use his power for documenting false reports for Warden Norton. Of course, Warden Norton was unaware that Andy was keeping a second set of books. Andy was in fact laundering money into an account only he had access too. Yes, Andy used his power to help the inmates build up their prison library by getting books. He assisted a young inmate in getting his GED. Andy also uses the Wardens financial schemes to build a case to bring him and the entire corrupt prison down. To me, the money laundering is payback for the years he falsely sat in prison. Andyââ¬â¢s best friend, Red, is the leader of their little group in prison. As an older man, he has adjusted to immorality of prison life. He sees the suffering and wrong doing of the other inmates, Chief Guard Bradley, and he seems to understand the evil power of the Warden and does what he has to do to survive in prison. He is a good guy and a good friend and his only downfall seems to be cigarettes, posters, and magazines from outside of the prison. All of those items are considered contraband and are illegal in any prison. Red laughs when Andy asks him to obtain a pick hammer and a poster of Rita Hayworth. Andy needs these items for his great escape however Red has no idea about it. Redââ¬â¢s freedom comes by skipping parole. Red, like Andy, abuses how power with people in a more positive way, He helps others have a more bearable time in prison amongst total chaos and corruption. Red committing the small unethical act of skipping parole was on rder to fulfill the greater food, seeing his friend Andy and living a good life of freedom. Chief Guard Bradley abused his power to instill fear and the respect he thought he deserved as the head guard in the prison. It was necessary for him or his staff to commit the crimes they did against the inmates. He committed most of his unethical acts in order to gain the respect, not of the inmates, but of Warden Norton. Warden Norton has to be, without a doubt, the most unethical character in the movie. I guess that should be expected since he was the character with the most power. He allows the guards to beat and intimidate the inmates and uses prison labor for public works. He received kickbacks from this scheme which unbeknownst to him, Andy sets up in his name in a secret account. I feel the most unethical thing Warden Norton did was commit murder. The inmate that Andy helped get his GED, presented evidence that his former prison cell mate committed the murders of Andyââ¬â¢s wife and her lover; not Andy. Warden Norton needed Andy, and he feared he would be found out about the kickbacks. He needed Andy financially, so the inmate with the information to free Andy had to die. Even in the face of fear, Warden Norriton uses his power to keep Andy in his place. Ethical Implications It seems as though Shawshank Prison functioned as a hierarchy of ethics. If the top leader, the warden, is unethical, it seems to stream down in a scandal of unethical actions by many. If the leadership in any organization is unethical, many will function unethically in order to stay in their positions. Recognizing unethical behavior can sometimes not be easy; people try to rationalize and try to justify their actions as excuses for their behavior.
Mechanisms for Optical Limiting
Mechanisms for Optical Limiting Chapter 2 2.1. Reverse Saturable Absorption In the mid 1960s shortly after the invention of the laser, many researchers were investigating dyes for potential application to Q-switching of the laser cavity. For this application, dyes were sought that would bleach to transparency under intense illumination (saturable absorbers). Guiliano and Hess [2a] in 1967 were investigating vat dyes and their modified cousins and noted some examples that not only did not bleach to transparency but instead darkened at high intensities. This was the first recognition of the property of reverse saturable absorption (RSA). Reverse saturable absorption generally arises in a molecular system when the excited state absorption cross section is larger than the ground state cross section. The process can be understood by considering a system that is modeled using three vibronically broadened electronic energy levels, as shown in figure 2.1. The cross section for absorption from the ground state 1 is à ¯Ã à ³1. à ¯Ã à ³2 is the cross section for absorption from the first excited state 2 to the second excited state 3. The lifetime of the first excited state is à ¯Ã à ´2 (seconds). Figure 2.1: Three level and Four level models for RSA As light is absorbed by the material, the first excited state begins to become populated and contributes to the total absorption cross section. If à ¯Ã à ³2 is smaller than à ¯Ã à ³1, then the material becomes more transparent or ââ¬Ëbleachesââ¬â¢ i.e. it is a saturable absorber. If à ¯Ã à ³2 is larger than à ¯Ã à ³1, then the total absorption increases, and the material is known as a reverse saturable absorber. This behavior is shown in figure 2.2 Figure 2.2: Plot of the incident intensity versus the transmitted intensity of a typical three level RSA material. The change in intensity of a beam as it propagates through the material is: , (2.1) Where z is the direction traversed, NT is the total number of active molecules per area in the slice dz, N2 is the population of level 2 and the population of level 3 has been neglected. Initially, the material obeys Beerââ¬â¢s law when 2 is unpopulated, and the transmission is constant as the incident fluence is increased. The slope is given by. At a sufficiently high fluence, however, the first excited state 2 becomes substantially populated and in the limit of complete ground state depletion the slope again becomes constant at the new value of. The optical limiting action is not truly limiting, as the fluence, which is transmitted, is still increasing with increasing incident fluence, but it does so more slowly. If the ratio à ¯Ã à ³2/à ¯Ã à ³1, is sufficiently large, however, the new transmission will be small and in a properly designed system the dynamic range of the sensor will be greatly extended. The three level diagrams describe the simplest case for RSA materials but can generally only be applied for subnanosecond pulses and under circumstances such that transitions from the second excited state are negligible. The energy states involved in three level materials usually consists of singlet states and the transitions are all allowed. The transition cross sections are therefore large, but a disadvantage is that de-excitation is rapid (à ¯Ã à ´2 is small). This necessitates larger intensities for long pulses to activate the nonlinearity through populating the excited electronic state. Fortunately, on longer timescales in some systems, significant intersystem crossing to other states can occur from the first excited state. In this case the five level diagrams shown in figure 2.1 is applicable. The excited state 4 is usually a triplet or other long-lived state, and for long pulses it can act as a metastable state that accumulates population during the pulse. The lifetime of 4 gives an indication of the maximum pulse width for which the material is efficient to act as an optical limiter. Pulses with duration longer than the metastable state allow some of the metastable molecules generated by the leading edge of the pulse to decay to the ground state before the trailing edge have passed, thereby reducing the RSA. In most systems, à ¯Ã à ´3 and à ¯Ã à ´5 are very small and significant populations of 3 and 5 do not accumulate. Therefore, N3 and N5 can be set to zero, considerably simplifying the dynamical equations describing. The equations representing the full five level models are given below by: (2.2) (2.3) (2.4) (2.5) (2.6) (2.7) and (2.8) Where hà ¯Ã à ® is the energy per photon, I is the intensity of the pulse and stimulated emission has been neglected. The latter assumes that optical coupling to the excited states is well above the bottom of the vibronic manifolds and that relaxation from the optically-coupled states to the bottom of the manifolds occurs on a time scale that is much shorter than the pulse duration. To completely understand the response of an RSA device, these equations must be solved as the pulse propagates through the material. The material parameters necessary to solve the equations are à ¯Ã à ³1, à ¯Ã à ³2, à ¯Ã à ³4, à ¯Ã à ´2, à ¯Ã à ´4 and à ¯Ã à ´24. For optimum optical limiting performance, certain parameters need to be maximized. The ratio of the excited state absorption to the ground state, à ¯Ã à ³2/à ¯Ã à ³1, à ¯Ã à ³4/à ¯Ã à ³1 should be large to minimize the transmission of the limiter at high incident intensity. For maximum efficiency, the lifetime of the triplet state (à ¯Ã à ´2) and the intersystem crossing rate l/à ¯Ã à ´24 should be large to populate the triplet state and maintain the population throughout the pulse. By the mechanism of RSA we get better performance on optical limiting. 2.2. Two-Photon Absorption (TPA): Two-photon absorption (TPA) can also be used in a manner similar to RSA to construct optical limiters. In contrast with reverse saturable absorption, TPA is an instantaneous nonlinearity that involves the absorption of photon from the field to promote an electron from its initial state to a virtual intermediate state, followed by the absorption of a second photon that takes the electron to its final state. Since the intermediate state for such transitions is virtual, energy need not be conserved in the intermediate state but only in the final state. The mechanism of TPA can be thought of in terms of the three level RSA model for the case where the lifetime of the intermediate state approaches zero and the ground state absorption is extremely low (highly transparent). The intensity of the beam as it traverses the material is: (2.9) Where z is the linear absorption coefficient and à ¯Ã à ¢ is the TPA coefficient which is related to the imaginary part of à ¯Ã à £(3) by the equation (SI units): (2.10) Here, à ¯Ã à · is the circular frequency of the optical field, n0 is the linear index of refraction, and c is the speed of light in vacuum. The solution to the propagation equation for à ¯Ã à ¡= 0 (transparent material at low intensities) is given by (2.11) Where L is the sample length. This clearly demonstrates that the output intensity decreases as the input intensity increases, exactly the behavior that is desired for an optical limiter. The strength of this reduction is explicitly dependent on the TPA coefficient, the incident intensity and the sample thickness. For TPA, the material response is of the order of an optical cycle and is, therefore, independent of the optical pulse length for a fixed intensity. The device will respond virtually instantaneously to the pulse. On the other hand, because of the limited magnitude of à ¯Ã à ¢ in existing materials, high intensities are required to realize significant TPA. Since the intensity is essentially the energy density divided by the pulse duration, short pulses are required to achieve limiting with TPA for energy densities that may be high enough to damage an optical sensor. 2.3. Free-Carrier Absorption: This type of limiting occurs in semiconductor materials. Once carriers are optically generated in a semiconductor, whether by single photon or two-photon absorption, these electrons (holes) can be promoted to states higher (lower) in the conduction (valence) band by absorbing additional photons. This process is often phonon assisted, although depending on the details of the band structure and the frequency of the optical excitation, it may also be direct. The phonon assisted phenomenon is referred to as free-carrier absorption, and it is analogous to excited-state absorption in a molecular system. It is clearly an accumulative nonlinearity, since it depends on the buildup of carrier population in the bands as the incident optical pulse energy is absorbed. Free-carrier absorption always plays some role in the operation of a semiconductor limiter, if the excitation process results in the generation of significant free carrier populations in the bands. While it certainly contributes to the limiter performance and its inclusion is important in the precise modeling of the response of such devices, just as in the case of TPA, its importance typically pales in comparison with nonlinear refractive effects, whether the carriers are generated by single photon or two photon transitions. 2.4. Nonlinear Refraction Optical limiters based on self focusing and defocusing form another class of promising devices. The mechanism for these devices may arise from nonlinear refraction associated with carrier generation by either linear or two photon absorption in a semiconductor. Both self focusing and defocusing devices operate by refracting light away from the sensor as opposed to simply absorbing the incident radiation. Compared to strictly absorbing devices, these limiters can, therefore, potentially yield a larger dynamic range before damage to the limiter itself. Figure 2.3 (a) shows the typical device configuration for a self defocusing limiter, while figure 2.3 (b) shows a similar device based on self focusing. A converging lens is used to focus the incident radiation so it passes through the nonlinear medium. This lens provides optical gain to the system, allowing the device to activate at low incident intensities. The output passes through an aperture before impinging on the detector. At low input levels, the nonlinear medium has little effect on the incident beam, and the aperture blocks an insignificant portion of the beam, thus allowing for a low insertion loss for the device. When nonlinear refraction occurs, however, the nonuniform beam profile within the medium results in the generation of a spatially nonuniform refractive index. This acts as either a negative or positive lens, depending on the sign of the refractive nonlinearity, causing the incident beam to either defocus or focus. Figure 2.3: (a) Typical self defocusing optical limiter configuration (b) Typical self focusing optical limiter configuration. In a properly designed system, this self lensing results in significant energy blocked by the system aperture, thereby protecting the sensor. The location of the nonlinear medium is critical to the operation of the refractive limiting device. A self-focusing limiter works best if the nonlinear medium is placed approximately a Rayleigh range before the intermediate focus of the device. When the focusing lens is induced the effective focal length of the device is reduced, and hence a larger beam appears at the exit aperture. For a self-defocusing material, the optimum geometry is approximately one Rayleigh range after the focus. This geometry dependence can be exploited to determine not only the sign of the nonlinear refraction in a given medium, but the magnitude as well. This is the principle behind the so-called Z-scan technique, which has been pioneered by Van Stryland and coworkers [2b,2c]. The technique consists of moving the nonlinear medium through the focal region of a tightly focused beam while measuring the transmittance through an aperture placed in the far field of the focal plane. When the medium is far before the focal plane, no self-lensing occurs. As the medium approaches the focal plane, the high intensity begins to induce a lens in the medium. For a negative nonlinearity, this lens tends to collimate the beam, thereby increasing the transmittance through the aperture. Near the focal plane, even though the intensity is highest, the influence of the induced lens is minimized, resulting in a transmittance comparable to the linear transmittance. This is similar to placing a thin lens at the focus of a beam; this results in minimal effect on the far field beam pattern. As the sample is moved beyond the focal plane, the negative lens tends to increase the beam divergence, resulting in a decrease in the aperture transmittance. As the medium is moved still farther from focus, the intensity again becomes weak enough that the induced lensing is negligible. This sequence results in a change in transmittance with a characteristic peak, followed by a null, followed by a valley as the sample is moved from the input lens, through focus, toward the output lens. For a positive nonlinearity, the pattern consists of a valley, a null, and then a peak. Thus, the sign of the nonlinearity is readily determined. While nonlinear absorption has been neglected in this discussion, if present, it must also be accounted for. This is readily done by removing the aperture in the limiter and collecting all the light transmitted by the nonlinear material. This measurement is then insensitive to nonlinear refraction. The response in this case is a valley symmetrically located about the focal plane. It should be noted that nonlinear absorption and induced scattering cannot be distinguished by this technique. The general shape of the Z-scan for a positive index change, negative index change, and a nonlinear absorber or scatterer is shown in figure 2.4 . Figure 2.4: Schematic representation of z-scan results for a negative refractive nonlinearity (dashed curve) and a positive refractive nonlinearity (dotted curve). Both curves have been corrected for absorption. The solid curve shows the result of removing the aperture from the measurement apparatus and collecting all the transmitted light, thus isolating the nonlinear absorption [1e]. 2.5. Induced Scattering Scattering roots from interaction of light with small centers which may be physical particles or simple interfaces sandwiched between non-excited and excited molecular groups. The size of the scattering centers determines whether the scattering will be quite directional or reasonably uniform. Transmission of a medium, for a given solid angle, decreases when scattering centers are induced in the medium by an optical signal. Therefore, this phenomenon of scattering induced by optical signal may be applied to manufacture of optical limiters for sensor protection. Optical limiters based on induced scattering are usually focused on liquid media, as the phenomenon is usually reversible in these media. That is to say, the liquid in the excited state can return to equilibrium with ease in the absence of chemical or structural decomposition. However, in solids, usually irreversible decomposition processes generate the scattering centers which can lead to degradation in the deviceââ¬â¢s lin ear operation. When light is incident on a particle, the electric charges within the particle oscillate due to its interaction with the electric field. Radiations are then caused by the oscillation. In 1899, Lord Rayleigh originally presented the analytic expression and theory of the elastic scattering of light from particles with dimensions smaller than the wavelength of light. Rayleigh scattering is the name given to the phenomenon. This applies only to particles whose dimensions are quite smaller than the wavelength of light or which are non-absorbing. However, in 1908, Mie developed a theory for particles with dimensions comparable to the wavelength of light or greater [2d]. The transmitted intensity equations of the Mie scattering are notably more intricate than of Rayleigh scattering. In Mie scattering, a bigger percentage of the scattered radiation is in forward direction as the size of the scattering particles increases, implying that limiting based on Mie scattering will not be as effectiv e as Rayleigh scattering. 2.6. Photorefraction Two devices, namely coherent-beam excisor and the beam fanning limiter based on the photorefractive effect are used to limit coherent optical radiation. Materials showing photorefraction should have a nonzero Ãâ¡(2). The traditional photorefractive mechanism is based on the photorefractive crystal which possesses deep levels that can be excited optically to generate free charge in the conduction or valence band. In a material showing photorefraction, when two coherent beams interfere, additional mobile charge are generated at the peaks of the intensity pattern than at the valleys through photoexcitation of the deep levels of the crsytal. These charges which are photoexcited at the peaks diffuse into the valleys ensuing a variation of charge spatially, in correspondence to the materialââ¬â¢s interference pattern. These charges results in an electrostatic space-charge field which gives rise to a change in refractive index through the electro-optic effect in a properly oriented cry stal. Energy coupling and energy exchange can then be achieved between the two beams through the grating generated, which is 90 degrees phase shifted from the intensity of the photon field. A high intensity coherent beam when incident singly on a photorefractive crystal, the energy can be coupled into a large amount of low intensity scattered beams. Fields with new wave vectors are generated inside the crystal by the scattering of the incident beam at the crystal imperfections. The photorefractive gratings are then produced by the interference of the incident field with these scattered fields. Optical signal can later be coupled from the incident beam to the scattered beams through diffraction from these gratings. The light gets preferentially scattered to one side of the crystal as there is a preferred direction of energy transfer for photorefractive gratings which is determined by the direction of the c-axis of the crystal and the charge carriersââ¬â¢ sign. This photorefractive beam fanning phenomenon can be quite efficient in reducing the intensity of the transmitted beam. Construction of an optical limiter using this beam fanning process has been demonstrated by Cronin-Golomb and Yariv [2e]. The photorefractive excisor is another device which provides a weak seed beam to interfere with the incident beam. It is assembled to protect the sensor in such a way that the photorefractive grating produced by the interference of the primary beam with the seed beam at high intensities couples energy from the strong incident beam to the weak seed beam. The speed and efficiency of the device is thus improved. 2.7. Summary All of the nonlinear phenomena discussed above can be used for optical limiting, and figure 2.5 schematically illustrates the application of some of these processes. Figure 2.5 (a) depicts the use of induced absorption, such as reverse saturable absorption, two-photon absorption, and free-carrier absorption. Figures 2.5(b) and 2.5(d) represent, respectively, a self-defocusing limiter, self-focusing limiter, and an induced scattering limiter. Finally, figures 2.5(e) and 2.5(f) illustrate a photorefractive beam fanning limiter and a photorefractive excisor device. While it is often the case that any given material will exhibit multiple nonlinear properties, for simplicity the effects of each individual process have been separately depicted in figure 2.5. Figure 2.5: Some optical limiters based on different mechanisms (a) an induced absorption limiter (b) Self defocusing limiter (c) Self focusing limiter (d) Induced scattering limiter (e) Beam fanning limiter (f) Photorefractive excisor device [1e].
Friday, September 20, 2019
Concepts of Object Oriented Techniques with OO Issues
Concepts of Object Oriented Techniques with OO Issues Abstract Object-oriented frameworks offer reuse at a high design level promising several benefits to the development of complex systems. This paper sought to 1) define the concepts of object oriented techniques in addition with the OO issues, development techniques and concepts of object oriented programming, it is also introduced the UML as an ordinary and key tool for object-oriented design, additionally 2) we look further into the frameworks from the perspective of object-oriented techniques. In this section, it is aimed to define a reasonable promise between object oriented technology and frameworks. At the end, some future horizons for object oriented technology and frameworks are presented. I. Introduction Computing power and network bandwidth have increased dramatically over the past decade. However, the design and implementation of complex software remains expensive and error-prone. Much of the cost and effort stems from the continuous re-discovery and re-invention of core concepts and components across the software industry. In particular, the growing heterogeneity of hardware architectures and diversity of operating system and communication platforms makes it hard to build correct, portable, efficient, and inexpensive applications from scratch. Object-oriented (OO) techniques and frameworks are promising technologies for reifying proven software designs and implementations in order to reduce the cost and improve the quality of software. A framework is a reusable, semi-complete application that can be specialized to produce custom applications [19]. In contrast to earlier OO reuse techniques based on class libraries, frameworks are targeted for particular business units (such as dat a processing or cellular communications[1]) and application domains (such as user interfaces or real-time avionics). Frameworks like MacApp, ET++, Interviews, ACE, Microsofts MFC and DCOM, JavaSofts RMI, and implementations of OMGs CORBA play an increasingly important role in contemporary software development. II. Object oriented concepts and techniques History The concept of objects and instances in computing had its first major breakthrough with the PDP-1 system at MIT which was probably the earliest example of capability based architecture. Another early example was Sketchpad created by Ivan Sutherland in 1963; however, this was an application and not a programming paradigm. Objects as programming entities were introduced in the 1960s in Simula 67, a programming language designed for performing simulations, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. (They were working on ship simulations, and were confounded by the combinatorial explosion of how the different attributes from different ships could affect one another. The idea occurred to them of grouping the different types of ships into different classes of objects; each class of objects being responsible for defining its own data and behavior.) Such an approach was a simple extrapolation of concepts earlier used in analog programming. On ana log computers, mapping from real-world phenomena/objects to analog phenomena/objects (and conversely), was (and is) called simulation. Simula not only introduced the notion of classes, but also of instances of classes, which is probably the first explicit use of those notions. The ideas of Simula 67 influenced many later languages, especially Smalltalk and derivatives of Lisp and Pascal. The Smalltalk language, which was developed at Xerox PARC[2] (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk creators were influenced by the ideas introduced in Simula 67, but Smalltalk was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67. Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte magazine. In the 1970s, Kays Smalltalk work had influenced the Lisp community to incorporate object-based techniques which were introduced to developers via the Lisp machine. Experimentation with various extensions to Lisp (like LOOPS and Flavors introducing multiple inheritance and mixins), eventually led to the Common Lisp Object System (CLOS, a part of the first standardized object-oriented programming language, ANSI Common Lisp), which integrates functional programming and object-oriented programming and allows extension via a Meta-object protocol. In the 1980s, there were a few attempts to design processor architectures which included hardware support for objects in memory but these were not successful. Examples include the Intel iAPX 432 and the Linn Smart Rekursiv. Object-oriented programming developed as the dominant programming methodology during the mid-1990s, largely due to the influence of Visual FoxPro 3.0 or possibly C++. Its dominance was further enhanced by the rising popularity of graphical user interfaces, for which object-oriented programming seems to be well-suited. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream. At ETH ZÃ ¼rich, Niklaus Wirth and his colleagues had also been investigating such topics as data abstraction and modular programming (although this had been in common use in the 1960s or earlier). Modula-2 (1978) included both, and their succeeding design, Oberon, included a distinctive approach to object orientation, classes, and such. The approach is unlike Smalltalk, and very unlike C++. Object-oriented features have been added to many existing languages during that time, including Ada, BASIC, Fortran, Pascal, and others. Adding these features to languages that were not initially designed for them often led to problems with compatibility and maintainability of code. More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsofts .NET platform, and Java, developed by Sun Microsystems. VB.NET and C# both support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Just as procedural programming led to refinements of techniques such as structured programming, modern object-oriented software design methods include refinements such as the use of design patterns, design by contract, and modeling languages (such as UML). The term OOPS, which refers to an object-oriented programming system, was common in early development of object-oriented programming. III. Fundamental concepts and features Class Defines the abstract characteristics of a thing (object), including the things characteristics (its attributes, fields or properties) and the things behaviors (the things it can do, or methods, operations or features). One might say that a class is a blueprint or factory that describes the nature of something. For example, the class Dog would consist of traits shared by all dogs, such as breed and fur color (characteristics), and the ability to bark and sit (behaviors). Classes provide modularity and structure in an object-oriented computer program. A class should typically be recognizable to a non-programmer familiar with the problem domain, meaning that the characteristics of the class should make sense in context. Also, the code for a class should be relatively self-contained (generally using encapsulation). Collectively, the properties and methods defined by a class are called members. Object A pattern (exemplar) of a class. The class Dog defines all possible dogs by listing the characteristics and behaviors they can have; the object Lassie is one particular dog, with particular versions of the characteristics. A Dog has fur; Lassie has brown-and-white fur. Instance One can have an instance of a class; the instance is the actual object created at runtime. In programmer jargon, the Lassie object is an instance of the Dog class. The set of values of the attributes of a particular object is called its state. The object consists of state and the behavior thats defined in the objects class. More on Classes, Metaclasses, Parameterized Classes, and Exemplars There are two broad categories of objects: classes and instances. Users of object-oriented technology usually think of classes as containing the information necessary to create instances, i.e., the structure and capabilities of an instance is determined by its corresponding class. There are three commonly used (and different) views on the definition for class: A class is a pattern, template, or blueprint for a category of structurally identical items. The items created using the class are called instances. This is often referred to as the class as a `cookie cutter' view. As you might guess, the instances are the cookies. A class is a thing that consists of both a pattern and a mechanism for creating items based on that pattern. This is the class as an `instance factory' view; instances are the individual items that are manufactured (created) using the classs creation mechanism. A class is the set of all items created using a specific pattern. Said another way, the class is the set of all instances of that pattern. We should note that it is possible for an instance of a class to also be a class. A metaclass is a class whose instances themselves are classes. This means when we use the instance creation mechanism in a metaclass, the instance created will itself be a class. The instance creation mechanism of this class can, in turn, be used to create instances although these instances may or may not themselves be classes. A concept very similar to the metaclass is the parameterized class. A parameterized class is a template for a class wherein specific items have been identified as being required to create non-parameterized classes based on the template. In effect, a parameterized class can be viewed as a fill in the blanks version of a class. One cannot directly use the instance creation mechanism of a parameterized class. First, we must supply the required parameters, resulting in the creation of a non-parameterized class. Once we have a non-parameterized class, we can use its creation mechanisms to create instances. In this paper, we will use the term class to mean metaclass, parameterized class, or a class that is neither a metaclass nor a parameterized class. We will make a distinction only when it is necessary to do so. Further, we will occasionally refer to non-class instances. A non-class instance is an instance of a class, but is itself not a class. An instance of a metaclass, for example, would not be a non-class instance. In this paper, we will sometimes refer to instantiation. Instantiation has two common meanings: as a verb, instantiation is the process of creating an instance of a class, and as a noun, an instantiation is an instance of a class. Some people restrict the use of the term object to instances of classes. For these people, classes are not objects. However, when these people are confronted with the concepts of metaclasses and parameterized classes, they have a difficulty attempting to resolve the problems these concepts introduce. For example, is a class that is an instance of a metaclass an object even though it is itself a class? In this paper, we will use the term object to refer to both classes and their instances. We will only distinguish between the two when needed. Black Boxes and Interfaces Objects are black boxes. Specifically, the underlying implementations of objects are hidden from those that use the object. In object-oriented systems, it is only the producer (creator, designer, or builder) of an object that knows the details about the internal construction of that object. The consumers (users) of an object are denied knowledge of the inner workings of the object, and must deal with an object via one of its three distinct interfaces: The public interface. This is the interface that is open (visible) to everybody. The inheritance interface. This is the interface that is accessible only by direct specializations of the object. (We will discuss inheritance and specialization later in this chapter.) In class-based object-oriented systems, only classes can provide an inheritance interface. The parameter interface. In the case of parameterized classes, the parameter interface defines the parameters that must be supplied to create an instance of the parameterized class. Another way of saying that an item is in the public interface of an object is to say that the object exports that item. Similarly, when an object requires information from outside of itself (e.g., as with the parameters in a parameterized class), we can say that the object needs to import that information. Aggregation It is, of course, possible for objects to be composed of other objects. Aggregation is either: The process of creating a new object from two or more other objects, or An object that is composed of two or more other objects. For example, a date object could be fashioned from a month object, a day object, and a year object. A list of names object, for example, can be thought of as containing many name objects. A monolithic object is an object that has no externally-discernible structure. Said another way, a monolithic object does not appear to have been constructed from two or more other objects. Specifically, a monolithic object can only be treated as a cohesive whole. Those outside of a monolithic object cannot directly interact with any (real or imagined) objects within the monolithic object. A radio button in a graphical user interface (GUI) is an example of a monolithic object. Composite objects are objects that have an externally-discernible structure, and the structure can be addressed via the public interface of the composite object. The objects that comprise a composite object are referred to as component objects. Composite objects meet one or both of the following criteria: The state of a composite object is directly affected by the presence or absence of one or more of its component objects, and/or The component objects can be directly referenced via the public interface of their corresponding composite object. It is useful to divide composite objects into two subcategories: heterogeneous composite objects and homogeneous composite objects: A heterogeneous composite object is a composite object that is conceptually composed of component objects that are not all conceptually the same. For example, a date (made up of a month object, a day object, and a year object) is a heterogeneous composite object. A homogeneous composite object is a composite object that is conceptually composed of component objects that are all conceptually the same. For example, a list of addresses is a homogeneous composite object. The rules for designing heterogeneous composite objects are different from the rules for designing homogeneous composite objects. Specialization and Inheritance Aggregation is not the only way in which two objects can be related. One object can be a specialization of another object. Specialization is either: The process of defining a new object based on a (typically) more narrow definition of an existing object, or An object that is directly related to, and more narrowly defined than, another object. Specialization is usually associated with classes. It is usually only in the so-called classless object-oriented systems that we think of specialization for objects other than classes. Depending on their technical background, there are a number of different ways in which people express specialization. For example, those who are familiar with an object-oriented programming language called Smalltalk refer to specializations as subclasses and to the corresponding generalizations of these specializations as superclasses. Those with a background in the C++ programming language use the term derived class for specialization and base class for corresponding generalizations. It is common to say that everything that is true for a generalization is also true for its corresponding specialization. We can, for example, define checking accounts and savings accounts as specializations of bank accounts. Another way of saying this is that a checking account is a kind of bank account, and a savings account is a kind of bank account. Still another way of expressing this idea is to say that everything that was true for the bank account is also true for the savings account and the checking account. In an object-oriented context, we speak of specializations as inheriting characteristics from their corresponding generalizations. Inheritance can be defined as the process whereby one object acquires (gets, receives) characteristics from one or more other objects. Some object-oriented systems permit only single inheritance, a situation in which a specialization may only acquire characteristics from a single generalization. Many object-oriented systems, however, allow for multiple inheritance, a situation in which a specialization may acquire characteristics from two or more corresponding generalizations. Our previous discussion of the bank account, checking account, and savings account was an example of single inheritance. A telescope and a television set are both specializations of device that enables one to see things far away. A television set is also a kind of electronic device. You might say that a television set acquires characteristics from two different generalizations, device that enables one to see things far away and electronic device. Therefore, a television set is a product of multiple inheritance. Abstract Classes We usually think of classes as being complete definitions. However, there are situations where incomplete definitions are useful, and classes that represent these incomplete definitions are equally useful. For example, in everyday conversation, we might talk about such items as bank accounts, insurance policies, and houses. In object-oriented thinking, we often isolate useful, but incomplete, concepts such as these into their own special classes. Abstract classes are classes that embody coherent and cohesive, but incomplete, concepts, and in turn, make these characteristics available to their specializations via inheritance. People sometimes use the terms partial type and abstract superclass as synonyms for abstract class. While we would never create instances of abstract classes, we most certainly would make their individual characteristics available to more specialized classes via inheritance. For example, consider the concept of an automobile. On one hand, most people know what an automobile is. On the other hand, automobile is not a complete definition for any vehicle. It would be quite accurate to describe automobile as the set of characteristics that make a thing an automobile, in other words, the essence of automobile-ness. Operations The public interface of an object typically contains three different categories of items: operations (sometimes referred to as method selectors, method interfaces, messages, or methods), constants, and exceptions. An operation in the public interface of an object advertises a functional capability of that object. For example, deposit would be an operation in the public interface of a bank account object, what is current temperature would be an operation in the public interface of a temperature sensor object, and increment would be an operation in the public interface of a counter object. The actual algorithm for accomplishing an operation is referred to as a method. Unlike operations, methods are not in the public interface for an object. Rather, methods are hidden on the inside of an object. So, while users of bank account objects would know that they could make a deposit into a bank account, they would be unaware of the details as to how that deposit actually got credited to the bank account. We refer to the operations in the public interface of an object as suffered operations. Suffered operations are operations that meet two criteria: they are things that happen to an object, and they are in the public interface of that object. For example, we can say that a bank account suffers the operation of having a deposit made into it. The bank account can also suffer the operation of being queried as to its current balance. Some people also refer to suffered operations as exported operations. There are three broad categories of suffered operations, i.e.: A selector is an operation that tells us something about the state of an object, but cannot, by definition, change the state of the object. An operation that tells us the current balance of a bank account is an example of a selector operation. A constructor is an operation that has the ability to change the state of an object. For example, an operation in the public interface to a mailbox object that added a message to the mailbox would be a constructor operation. (Please note that some people restrict the definition of the term constructor to those operations that cause instances of a class to come into existence.) In the context of a homogeneous composite object, an iterator is an operation that allows its users to visit (access) each of the component objects that make up the homogeneous composite object. If we have a list of addresses, for example, and we wish to print the entire list, an iterator would allow us to visit each address object within the list and then, in turn, to print each address. Iterators can be further divided into two broad categories: active (open) iterators and passive (closed) iterators. Active iterators are objects in their own right. Passive iterators are implemented as operations in the interface of the object over which they allow iteration. Passive iterators are further broken down into selective iterators and constructive iterators. Passive selective iterators do not allow their users to change the object over which the iteration takes place. Passive constructive iterators do allow users to change the object over which iteration takes place. We can also describe suffered operations as primitive or composite. A primitive operation is an operation that cannot be accomplished simply, efficiently, and reliably without direct knowledge of the underlying (hidden) implementation of the object. As an example, we could argue that an operation that added an item to a list object, or an operation that deleted an item from a list object were primitive operations with respect to the list object. Suppose that we wanted to create a swap operation, an operation that would swap in a new item in a list, while at the same time swapping out an old item in the same list. This is not a primitive operation since we can accomplish this with a simple combination of the delete operation (deleting the old item) followed by the add operation (adding the new item). The swap operation is an example of a composite operation. A composite operation is any operation that is composed, or can be composed, of two or more primitive operations. Sometimes objects need help in maintaining their characteristics. Suppose, for example, that we wanted to create a generic ordered list object. An ordered list is a list that must order its contents from the smallest to the largest. Specifically, every time we add an item to our ordered list, that item would have to be placed in its proper position with respect to all the other items already in the list. By generic, we mean a template that can be instantiated with the category (class) of items we wish to place in the ordered list. It would not be unreasonable to implement this object as a parameterized class. Obviously, one of the parameters would be the category of items (e.g., class) that we desired to place in the list. For example, could instantiate (make an instance) the generic ordered list with a name class resulting in the creation of an ordered list of names class. There is a problem, however. Given that we could instantiate the generic ordered list with just about any category of items, how can we be sure that the ordered lists will know how to properly maintain order no matter what we use to instantiate the generic ordered list? Suppose, for example, that we wanted an ordered list of fazoomas. How could the generic list class tell if one fazooma was greater than or less than another fazooma? A solution would be for the generic ordered list to require a second parameter, a parameter over and above the category of items (class) that we desired to place in the list. This second parameter would be a The Constants In addition to suffered operations, the public interface of an object can also contain constants. Constants are objects of constant state. Imagine that we want to create a bounded list of addresses class. A bounded list is a list that has a fixed maximum number of elements. A bounded list can be empty, and it can contain fewer than the maximum number of elements. It can even contain the maximum number of elements, but it can never contain more than the defined maximum number of elements. Assume that we place a constant in the public interface of our bounded list of addresses. This constant represents the maximum number of elements that can be placed in the bounded list. Assume also that there is a suffered operation that will tell us how many elements (addresses, in our example) are currently in the bounded list. We can now determine how much room is available in the bounded list by inquiring how many addresses are already in the list, and then subtracting this from the previously-defined constant. In some cases, as with the bounded list example above, constants are provided more for convenience than necessity. In other cases, such as in the case of encryption algorithms needing a seed value, constants are an absolute requirement. Exceptions A third category of items that can be found in the public interface of objects is exceptions. Exceptions have two different definitions: an event that causes suspension of normal application execution, and a set of information directly relating to the event that caused suspension of normal application execution. Exceptions can be contrasted with an older, less reliable technology: error codes. The idea behind error codes was fairly simple. You would request that an application, or part of an application, accomplish some work. One of the pieces of information that would be returned to the requester would be an error code. If all had gone well, the error code would typically have a value of zero. If any problems had occurred, the error code would have a non-zero value. It was also quite common to associate different non-zero values of an error code with specific errors. Error codes suffered from two major problems: No one was forced to actually check the value of returned error codes. Changes (additions, deletions, and modifications) in the meanings of the special values assigned to error codes were not automatically passed on to interested parties. Tracking the effects of a changed error code value often consumed a significant amount of resources. To understand how exceptions directly address both of these issues, we first need to understand how exceptions typically work: Exceptions may be defined by the environment or by the user. When an exceptional (but not unforeseen) condition occurs, an appropriate exception is activated. (People use different terms to express the activation of an exception. The most common is raise. Less commonly, people use the terms throw or activate.) This activation may be automatic (controlled by the environment) or may be expressly requested by the designer of the object or application. Examples of exceptional conditions include trying to remove something from an empty container, directing an elevator on the top floor to go up, and attempting to cause a date to take on an invalid value like February 31, 1993. Once the exception is activated, normal application execution stops and control is transferred to a locally defined exception handler, if one is present. If no locally defined exception handler is present or if the exception handler is not equipped to handle the exception, the exception is propagated to the next higher level of the application. Exceptions cannot be ignored. An exception will continue to be sent to higher levels of the application until it is either turned off or the application ceases to function. An exception handler checks to see what type of exception has been activated. If the exception is one that the handler recognizes, a specific set of actions is taken. Executing a set of actions in response to an exception is known as handling the exception. Handling an exception deactivates the exception; the exception will not be propagated any further. Unlike error codes, exceptions cannot be ignored. Once an exception has been activated, it demands attention. In object-oriented systems, exceptions are placed in the public interfaces of objects. Changes in the public interfaces of objects very often require an automatic rechecking of all other objects that invoke operations in the changed objects. Thus, changes in exceptions result in at least a partially automated propagation of change information. Object Coupling and Object Cohesion Engineers have known for centuries that the less any one part of a system knows about any other part of that same system, the better the overall system. Systems whose components are highly independent of each other are easier to fix and enhance than systems where there are strong interdependencies among some or all of the components. Highly independent system components are possible when there is minimal coupling among the components, and each component is highly cohesive. Coupling is a measure of the strength of the connection between any two system components. The more any one component knows about another component, the tighter (worse) the coupling is between those two components. Cohesion is a measure of how logically related the parts of an individual component are to each o Concepts of Object Oriented Techniques with OO Issues Concepts of Object Oriented Techniques with OO Issues Abstract Object-oriented frameworks offer reuse at a high design level promising several benefits to the development of complex systems. This paper sought to 1) define the concepts of object oriented techniques in addition with the OO issues, development techniques and concepts of object oriented programming, it is also introduced the UML as an ordinary and key tool for object-oriented design, additionally 2) we look further into the frameworks from the perspective of object-oriented techniques. In this section, it is aimed to define a reasonable promise between object oriented technology and frameworks. At the end, some future horizons for object oriented technology and frameworks are presented. I. Introduction Computing power and network bandwidth have increased dramatically over the past decade. However, the design and implementation of complex software remains expensive and error-prone. Much of the cost and effort stems from the continuous re-discovery and re-invention of core concepts and components across the software industry. In particular, the growing heterogeneity of hardware architectures and diversity of operating system and communication platforms makes it hard to build correct, portable, efficient, and inexpensive applications from scratch. Object-oriented (OO) techniques and frameworks are promising technologies for reifying proven software designs and implementations in order to reduce the cost and improve the quality of software. A framework is a reusable, semi-complete application that can be specialized to produce custom applications [19]. In contrast to earlier OO reuse techniques based on class libraries, frameworks are targeted for particular business units (such as dat a processing or cellular communications[1]) and application domains (such as user interfaces or real-time avionics). Frameworks like MacApp, ET++, Interviews, ACE, Microsofts MFC and DCOM, JavaSofts RMI, and implementations of OMGs CORBA play an increasingly important role in contemporary software development. II. Object oriented concepts and techniques History The concept of objects and instances in computing had its first major breakthrough with the PDP-1 system at MIT which was probably the earliest example of capability based architecture. Another early example was Sketchpad created by Ivan Sutherland in 1963; however, this was an application and not a programming paradigm. Objects as programming entities were introduced in the 1960s in Simula 67, a programming language designed for performing simulations, created by Ole-Johan Dahl and Kristen Nygaard of the Norwegian Computing Center in Oslo. (They were working on ship simulations, and were confounded by the combinatorial explosion of how the different attributes from different ships could affect one another. The idea occurred to them of grouping the different types of ships into different classes of objects; each class of objects being responsible for defining its own data and behavior.) Such an approach was a simple extrapolation of concepts earlier used in analog programming. On ana log computers, mapping from real-world phenomena/objects to analog phenomena/objects (and conversely), was (and is) called simulation. Simula not only introduced the notion of classes, but also of instances of classes, which is probably the first explicit use of those notions. The ideas of Simula 67 influenced many later languages, especially Smalltalk and derivatives of Lisp and Pascal. The Smalltalk language, which was developed at Xerox PARC[2] (by Alan Kay and others) in the 1970s, introduced the term object-oriented programming to represent the pervasive use of objects and messages as the basis for computation. Smalltalk creators were influenced by the ideas introduced in Simula 67, but Smalltalk was designed to be a fully dynamic system in which classes could be created and modified dynamically rather than statically as in Simula 67. Smalltalk and with it OOP were introduced to a wider audience by the August 1981 issue of Byte magazine. In the 1970s, Kays Smalltalk work had influenced the Lisp community to incorporate object-based techniques which were introduced to developers via the Lisp machine. Experimentation with various extensions to Lisp (like LOOPS and Flavors introducing multiple inheritance and mixins), eventually led to the Common Lisp Object System (CLOS, a part of the first standardized object-oriented programming language, ANSI Common Lisp), which integrates functional programming and object-oriented programming and allows extension via a Meta-object protocol. In the 1980s, there were a few attempts to design processor architectures which included hardware support for objects in memory but these were not successful. Examples include the Intel iAPX 432 and the Linn Smart Rekursiv. Object-oriented programming developed as the dominant programming methodology during the mid-1990s, largely due to the influence of Visual FoxPro 3.0 or possibly C++. Its dominance was further enhanced by the rising popularity of graphical user interfaces, for which object-oriented programming seems to be well-suited. An example of a closely related dynamic GUI library and OOP language can be found in the Cocoa frameworks on Mac OS X, written in Objective-C, an object-oriented, dynamic messaging extension to C based on Smalltalk. OOP toolkits also enhanced the popularity of event-driven programming (although this concept is not limited to OOP). Some feel that association with GUIs (real or perceived) was what propelled OOP into the programming mainstream. At ETH ZÃ ¼rich, Niklaus Wirth and his colleagues had also been investigating such topics as data abstraction and modular programming (although this had been in common use in the 1960s or earlier). Modula-2 (1978) included both, and their succeeding design, Oberon, included a distinctive approach to object orientation, classes, and such. The approach is unlike Smalltalk, and very unlike C++. Object-oriented features have been added to many existing languages during that time, including Ada, BASIC, Fortran, Pascal, and others. Adding these features to languages that were not initially designed for them often led to problems with compatibility and maintainability of code. More recently, a number of languages have emerged that are primarily object-oriented yet compatible with procedural methodology, such as Python and Ruby. Probably the most commercially important recent object-oriented languages are Visual Basic.NET (VB.NET) and C#, both designed for Microsofts .NET platform, and Java, developed by Sun Microsystems. VB.NET and C# both support cross-language inheritance, allowing classes defined in one language to subclass classes defined in the other language. Just as procedural programming led to refinements of techniques such as structured programming, modern object-oriented software design methods include refinements such as the use of design patterns, design by contract, and modeling languages (such as UML). The term OOPS, which refers to an object-oriented programming system, was common in early development of object-oriented programming. III. Fundamental concepts and features Class Defines the abstract characteristics of a thing (object), including the things characteristics (its attributes, fields or properties) and the things behaviors (the things it can do, or methods, operations or features). One might say that a class is a blueprint or factory that describes the nature of something. For example, the class Dog would consist of traits shared by all dogs, such as breed and fur color (characteristics), and the ability to bark and sit (behaviors). Classes provide modularity and structure in an object-oriented computer program. A class should typically be recognizable to a non-programmer familiar with the problem domain, meaning that the characteristics of the class should make sense in context. Also, the code for a class should be relatively self-contained (generally using encapsulation). Collectively, the properties and methods defined by a class are called members. Object A pattern (exemplar) of a class. The class Dog defines all possible dogs by listing the characteristics and behaviors they can have; the object Lassie is one particular dog, with particular versions of the characteristics. A Dog has fur; Lassie has brown-and-white fur. Instance One can have an instance of a class; the instance is the actual object created at runtime. In programmer jargon, the Lassie object is an instance of the Dog class. The set of values of the attributes of a particular object is called its state. The object consists of state and the behavior thats defined in the objects class. More on Classes, Metaclasses, Parameterized Classes, and Exemplars There are two broad categories of objects: classes and instances. Users of object-oriented technology usually think of classes as containing the information necessary to create instances, i.e., the structure and capabilities of an instance is determined by its corresponding class. There are three commonly used (and different) views on the definition for class: A class is a pattern, template, or blueprint for a category of structurally identical items. The items created using the class are called instances. This is often referred to as the class as a `cookie cutter' view. As you might guess, the instances are the cookies. A class is a thing that consists of both a pattern and a mechanism for creating items based on that pattern. This is the class as an `instance factory' view; instances are the individual items that are manufactured (created) using the classs creation mechanism. A class is the set of all items created using a specific pattern. Said another way, the class is the set of all instances of that pattern. We should note that it is possible for an instance of a class to also be a class. A metaclass is a class whose instances themselves are classes. This means when we use the instance creation mechanism in a metaclass, the instance created will itself be a class. The instance creation mechanism of this class can, in turn, be used to create instances although these instances may or may not themselves be classes. A concept very similar to the metaclass is the parameterized class. A parameterized class is a template for a class wherein specific items have been identified as being required to create non-parameterized classes based on the template. In effect, a parameterized class can be viewed as a fill in the blanks version of a class. One cannot directly use the instance creation mechanism of a parameterized class. First, we must supply the required parameters, resulting in the creation of a non-parameterized class. Once we have a non-parameterized class, we can use its creation mechanisms to create instances. In this paper, we will use the term class to mean metaclass, parameterized class, or a class that is neither a metaclass nor a parameterized class. We will make a distinction only when it is necessary to do so. Further, we will occasionally refer to non-class instances. A non-class instance is an instance of a class, but is itself not a class. An instance of a metaclass, for example, would not be a non-class instance. In this paper, we will sometimes refer to instantiation. Instantiation has two common meanings: as a verb, instantiation is the process of creating an instance of a class, and as a noun, an instantiation is an instance of a class. Some people restrict the use of the term object to instances of classes. For these people, classes are not objects. However, when these people are confronted with the concepts of metaclasses and parameterized classes, they have a difficulty attempting to resolve the problems these concepts introduce. For example, is a class that is an instance of a metaclass an object even though it is itself a class? In this paper, we will use the term object to refer to both classes and their instances. We will only distinguish between the two when needed. Black Boxes and Interfaces Objects are black boxes. Specifically, the underlying implementations of objects are hidden from those that use the object. In object-oriented systems, it is only the producer (creator, designer, or builder) of an object that knows the details about the internal construction of that object. The consumers (users) of an object are denied knowledge of the inner workings of the object, and must deal with an object via one of its three distinct interfaces: The public interface. This is the interface that is open (visible) to everybody. The inheritance interface. This is the interface that is accessible only by direct specializations of the object. (We will discuss inheritance and specialization later in this chapter.) In class-based object-oriented systems, only classes can provide an inheritance interface. The parameter interface. In the case of parameterized classes, the parameter interface defines the parameters that must be supplied to create an instance of the parameterized class. Another way of saying that an item is in the public interface of an object is to say that the object exports that item. Similarly, when an object requires information from outside of itself (e.g., as with the parameters in a parameterized class), we can say that the object needs to import that information. Aggregation It is, of course, possible for objects to be composed of other objects. Aggregation is either: The process of creating a new object from two or more other objects, or An object that is composed of two or more other objects. For example, a date object could be fashioned from a month object, a day object, and a year object. A list of names object, for example, can be thought of as containing many name objects. A monolithic object is an object that has no externally-discernible structure. Said another way, a monolithic object does not appear to have been constructed from two or more other objects. Specifically, a monolithic object can only be treated as a cohesive whole. Those outside of a monolithic object cannot directly interact with any (real or imagined) objects within the monolithic object. A radio button in a graphical user interface (GUI) is an example of a monolithic object. Composite objects are objects that have an externally-discernible structure, and the structure can be addressed via the public interface of the composite object. The objects that comprise a composite object are referred to as component objects. Composite objects meet one or both of the following criteria: The state of a composite object is directly affected by the presence or absence of one or more of its component objects, and/or The component objects can be directly referenced via the public interface of their corresponding composite object. It is useful to divide composite objects into two subcategories: heterogeneous composite objects and homogeneous composite objects: A heterogeneous composite object is a composite object that is conceptually composed of component objects that are not all conceptually the same. For example, a date (made up of a month object, a day object, and a year object) is a heterogeneous composite object. A homogeneous composite object is a composite object that is conceptually composed of component objects that are all conceptually the same. For example, a list of addresses is a homogeneous composite object. The rules for designing heterogeneous composite objects are different from the rules for designing homogeneous composite objects. Specialization and Inheritance Aggregation is not the only way in which two objects can be related. One object can be a specialization of another object. Specialization is either: The process of defining a new object based on a (typically) more narrow definition of an existing object, or An object that is directly related to, and more narrowly defined than, another object. Specialization is usually associated with classes. It is usually only in the so-called classless object-oriented systems that we think of specialization for objects other than classes. Depending on their technical background, there are a number of different ways in which people express specialization. For example, those who are familiar with an object-oriented programming language called Smalltalk refer to specializations as subclasses and to the corresponding generalizations of these specializations as superclasses. Those with a background in the C++ programming language use the term derived class for specialization and base class for corresponding generalizations. It is common to say that everything that is true for a generalization is also true for its corresponding specialization. We can, for example, define checking accounts and savings accounts as specializations of bank accounts. Another way of saying this is that a checking account is a kind of bank account, and a savings account is a kind of bank account. Still another way of expressing this idea is to say that everything that was true for the bank account is also true for the savings account and the checking account. In an object-oriented context, we speak of specializations as inheriting characteristics from their corresponding generalizations. Inheritance can be defined as the process whereby one object acquires (gets, receives) characteristics from one or more other objects. Some object-oriented systems permit only single inheritance, a situation in which a specialization may only acquire characteristics from a single generalization. Many object-oriented systems, however, allow for multiple inheritance, a situation in which a specialization may acquire characteristics from two or more corresponding generalizations. Our previous discussion of the bank account, checking account, and savings account was an example of single inheritance. A telescope and a television set are both specializations of device that enables one to see things far away. A television set is also a kind of electronic device. You might say that a television set acquires characteristics from two different generalizations, device that enables one to see things far away and electronic device. Therefore, a television set is a product of multiple inheritance. Abstract Classes We usually think of classes as being complete definitions. However, there are situations where incomplete definitions are useful, and classes that represent these incomplete definitions are equally useful. For example, in everyday conversation, we might talk about such items as bank accounts, insurance policies, and houses. In object-oriented thinking, we often isolate useful, but incomplete, concepts such as these into their own special classes. Abstract classes are classes that embody coherent and cohesive, but incomplete, concepts, and in turn, make these characteristics available to their specializations via inheritance. People sometimes use the terms partial type and abstract superclass as synonyms for abstract class. While we would never create instances of abstract classes, we most certainly would make their individual characteristics available to more specialized classes via inheritance. For example, consider the concept of an automobile. On one hand, most people know what an automobile is. On the other hand, automobile is not a complete definition for any vehicle. It would be quite accurate to describe automobile as the set of characteristics that make a thing an automobile, in other words, the essence of automobile-ness. Operations The public interface of an object typically contains three different categories of items: operations (sometimes referred to as method selectors, method interfaces, messages, or methods), constants, and exceptions. An operation in the public interface of an object advertises a functional capability of that object. For example, deposit would be an operation in the public interface of a bank account object, what is current temperature would be an operation in the public interface of a temperature sensor object, and increment would be an operation in the public interface of a counter object. The actual algorithm for accomplishing an operation is referred to as a method. Unlike operations, methods are not in the public interface for an object. Rather, methods are hidden on the inside of an object. So, while users of bank account objects would know that they could make a deposit into a bank account, they would be unaware of the details as to how that deposit actually got credited to the bank account. We refer to the operations in the public interface of an object as suffered operations. Suffered operations are operations that meet two criteria: they are things that happen to an object, and they are in the public interface of that object. For example, we can say that a bank account suffers the operation of having a deposit made into it. The bank account can also suffer the operation of being queried as to its current balance. Some people also refer to suffered operations as exported operations. There are three broad categories of suffered operations, i.e.: A selector is an operation that tells us something about the state of an object, but cannot, by definition, change the state of the object. An operation that tells us the current balance of a bank account is an example of a selector operation. A constructor is an operation that has the ability to change the state of an object. For example, an operation in the public interface to a mailbox object that added a message to the mailbox would be a constructor operation. (Please note that some people restrict the definition of the term constructor to those operations that cause instances of a class to come into existence.) In the context of a homogeneous composite object, an iterator is an operation that allows its users to visit (access) each of the component objects that make up the homogeneous composite object. If we have a list of addresses, for example, and we wish to print the entire list, an iterator would allow us to visit each address object within the list and then, in turn, to print each address. Iterators can be further divided into two broad categories: active (open) iterators and passive (closed) iterators. Active iterators are objects in their own right. Passive iterators are implemented as operations in the interface of the object over which they allow iteration. Passive iterators are further broken down into selective iterators and constructive iterators. Passive selective iterators do not allow their users to change the object over which the iteration takes place. Passive constructive iterators do allow users to change the object over which iteration takes place. We can also describe suffered operations as primitive or composite. A primitive operation is an operation that cannot be accomplished simply, efficiently, and reliably without direct knowledge of the underlying (hidden) implementation of the object. As an example, we could argue that an operation that added an item to a list object, or an operation that deleted an item from a list object were primitive operations with respect to the list object. Suppose that we wanted to create a swap operation, an operation that would swap in a new item in a list, while at the same time swapping out an old item in the same list. This is not a primitive operation since we can accomplish this with a simple combination of the delete operation (deleting the old item) followed by the add operation (adding the new item). The swap operation is an example of a composite operation. A composite operation is any operation that is composed, or can be composed, of two or more primitive operations. Sometimes objects need help in maintaining their characteristics. Suppose, for example, that we wanted to create a generic ordered list object. An ordered list is a list that must order its contents from the smallest to the largest. Specifically, every time we add an item to our ordered list, that item would have to be placed in its proper position with respect to all the other items already in the list. By generic, we mean a template that can be instantiated with the category (class) of items we wish to place in the ordered list. It would not be unreasonable to implement this object as a parameterized class. Obviously, one of the parameters would be the category of items (e.g., class) that we desired to place in the list. For example, could instantiate (make an instance) the generic ordered list with a name class resulting in the creation of an ordered list of names class. There is a problem, however. Given that we could instantiate the generic ordered list with just about any category of items, how can we be sure that the ordered lists will know how to properly maintain order no matter what we use to instantiate the generic ordered list? Suppose, for example, that we wanted an ordered list of fazoomas. How could the generic list class tell if one fazooma was greater than or less than another fazooma? A solution would be for the generic ordered list to require a second parameter, a parameter over and above the category of items (class) that we desired to place in the list. This second parameter would be a The Constants In addition to suffered operations, the public interface of an object can also contain constants. Constants are objects of constant state. Imagine that we want to create a bounded list of addresses class. A bounded list is a list that has a fixed maximum number of elements. A bounded list can be empty, and it can contain fewer than the maximum number of elements. It can even contain the maximum number of elements, but it can never contain more than the defined maximum number of elements. Assume that we place a constant in the public interface of our bounded list of addresses. This constant represents the maximum number of elements that can be placed in the bounded list. Assume also that there is a suffered operation that will tell us how many elements (addresses, in our example) are currently in the bounded list. We can now determine how much room is available in the bounded list by inquiring how many addresses are already in the list, and then subtracting this from the previously-defined constant. In some cases, as with the bounded list example above, constants are provided more for convenience than necessity. In other cases, such as in the case of encryption algorithms needing a seed value, constants are an absolute requirement. Exceptions A third category of items that can be found in the public interface of objects is exceptions. Exceptions have two different definitions: an event that causes suspension of normal application execution, and a set of information directly relating to the event that caused suspension of normal application execution. Exceptions can be contrasted with an older, less reliable technology: error codes. The idea behind error codes was fairly simple. You would request that an application, or part of an application, accomplish some work. One of the pieces of information that would be returned to the requester would be an error code. If all had gone well, the error code would typically have a value of zero. If any problems had occurred, the error code would have a non-zero value. It was also quite common to associate different non-zero values of an error code with specific errors. Error codes suffered from two major problems: No one was forced to actually check the value of returned error codes. Changes (additions, deletions, and modifications) in the meanings of the special values assigned to error codes were not automatically passed on to interested parties. Tracking the effects of a changed error code value often consumed a significant amount of resources. To understand how exceptions directly address both of these issues, we first need to understand how exceptions typically work: Exceptions may be defined by the environment or by the user. When an exceptional (but not unforeseen) condition occurs, an appropriate exception is activated. (People use different terms to express the activation of an exception. The most common is raise. Less commonly, people use the terms throw or activate.) This activation may be automatic (controlled by the environment) or may be expressly requested by the designer of the object or application. Examples of exceptional conditions include trying to remove something from an empty container, directing an elevator on the top floor to go up, and attempting to cause a date to take on an invalid value like February 31, 1993. Once the exception is activated, normal application execution stops and control is transferred to a locally defined exception handler, if one is present. If no locally defined exception handler is present or if the exception handler is not equipped to handle the exception, the exception is propagated to the next higher level of the application. Exceptions cannot be ignored. An exception will continue to be sent to higher levels of the application until it is either turned off or the application ceases to function. An exception handler checks to see what type of exception has been activated. If the exception is one that the handler recognizes, a specific set of actions is taken. Executing a set of actions in response to an exception is known as handling the exception. Handling an exception deactivates the exception; the exception will not be propagated any further. Unlike error codes, exceptions cannot be ignored. Once an exception has been activated, it demands attention. In object-oriented systems, exceptions are placed in the public interfaces of objects. Changes in the public interfaces of objects very often require an automatic rechecking of all other objects that invoke operations in the changed objects. Thus, changes in exceptions result in at least a partially automated propagation of change information. Object Coupling and Object Cohesion Engineers have known for centuries that the less any one part of a system knows about any other part of that same system, the better the overall system. Systems whose components are highly independent of each other are easier to fix and enhance than systems where there are strong interdependencies among some or all of the components. Highly independent system components are possible when there is minimal coupling among the components, and each component is highly cohesive. Coupling is a measure of the strength of the connection between any two system components. The more any one component knows about another component, the tighter (worse) the coupling is between those two components. Cohesion is a measure of how logically related the parts of an individual component are to each o
Subscribe to:
Posts (Atom)