13.3 Relationships Among Objects in an Inheritance Hierarchy

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "13.3 Relationships Among Objects in an Inheritance Hierarchy"

Transkript

1 Chapter13 We now continue our study of OOP by explaining and demonstrating polymorphism with inheritance hierarchies. Polymorphism enables you to program in the general rather than program in the specific. In particular, polymorphism enables you to write programs that process objects of classes that are part of the same class hierarchy as if they were all objects of the hierarchy s base class. (OOP çalışmamıza şuradan devam edeceğiz: Inheritance hiyerarşisi ile polymorphism i açıklayacağız, göstereceğiz.) 13.3 Relationships Among Objects in an Inheritance Hierarchy Invoking Base-Class Functions from Derived-Class Objects The example demonstrates three ways to aim base and derived-class pointers at base and derived-class objects. The first two are straightforward we aim a base-class pointer at a base-class object and invoke base class functionality, and we aim a derived-class pointer at a derived-class object and invoke derived-class functionality. ( base ve derived-class object lere, base ve derived-class pointer lar ile ilgili 3 farklı yol gösterilmiştir bu örnekte. İlk ikisi straightforward dır, bunlardan birincisinde base-class object e base class pointer point eder, dolayısıyla base class functionality invoke edilir. Bunlardan ikincisinde ise derived class object e derived class pointer point eder, dolayısıyla derived class functionality invoke edilir. ) Then, we demonstrate the relationship between derived classes and base classes (i.e., the is-a relationship of inheritance) by aiming a base-class pointer at a derived-class object and showing that the base-class functionality is indeed available in the derived-class object. ( üçüncüsünde ise, derived class lar ve base class lar arasındaki ilişki gösterilir, derived class object e base class pointer point eder, dolayısıyla derived class object de base class functionality yi kullanmak mümkündür. ) Recall that each BasePlusCommissionEmployee object is a CommissionEmployee that also has a base salary. (Herbir BasePlusCommissionEmployee object i bir CommissionEmployee object idir. Chapter12 de bunların header file ları da verilmişti.)

2 1 - CommissionEmployee object is created. 2- a pointer to this class is created. 1 - BasePlusCommissionEm ployee object is created. 2 - a pointer to this class is created. Derived class pointer a, derived class object in adresi assign edilir. Bu pointer invoke edilince, derived class-daki print fonksiyonu çağırılır. (Lines ) Base class pointer a, base class object in adresi assign edilir. Bu pointer invoke edilince, base classdaki print fonksiyonu çağırılır.(lines 36-39)

3 Yukarıdaki programın output ı aşağıdaki gibidir: Aiming a Base-Class Pointer at a Derived-Class Object Line 49 then assigns the address of derived-class object basepluscommissionemployee to base-class pointer commissionemployeeptr, which line 53 uses to invoke member function print. This crossover is allowed because an object of a derived class is an object of its base class.

4 ( 49. satırda, base class pointer(commissionemployeeptr) a, derived class object in adresi assign ediliyor. 53. Satırda, member function print() çağırılıyor. Burada çağırılan print() base class ın member function ı olan print dir. Bu crossover a izin verilir, çünkü derived class ın bir object i aynı zamanda base class ın da bir object idir. ) Despite the fact that the base class CommissionEmployee pointer points to a derived class BasePlusCommissionEmployee object, the base class CommissionEmployee s print member function is invoked (rather than BasePlusCommissionEmployee s print function). ( base-class pointer ı, derived class object e point etmesine rağmen, base class ın print() member fonksiyonu çağırılır. ) The output of each print member-function invocation in this program reveals that the invoked functionality depends on the type of the pointer (or reference) used to invoke the function, not the type of the object for which the member function is called. ( Invoke edilen(çağırılan) fonksiyon, pointer ın(veya reference ın) type ına bağlıdır, pointer ın point ettiği object in type ına bağlı değildir. ) In Section , when we introduce virtual functions, we demonstrate that it s possible to invoke the object type s functionality, rather than invoke the handle type s functionality. We ll see that this is crucial to implementing polymorphic behavior the key topic of this chapter. ( Şimdiye kadar öğrendiklerimizle handle type ının functionality sini çağırabiliyoruz bahsettiğimiz gibi. Yani handle type neymiş? Pointer ın type ıymış. Section de virtual fonksiyonları öğrendiğimizde, object type ının functionality sini invoke etmeyi(çağırmayı) öğreneceğiz. Bunu öğrenmek polymorphism fikrini anlamamız için çok önemli bir adım olacak, bu chapter ın ana fikri, en önemli kısmı öğrenilmiş olunacak. ) Aiming Derived-Class Pointers at Base-Class Objects In Section , we assigned the address of a derived-class object to a base-class pointer and explained that the C++ compiler allows this assignment, because a derived-class object is a base-class object. We take the opposite approach in Fig. 13.2, as we aim a derived-class pointer at a base-class object.

5 ( Bir önceki section da ne yapmıştık? Base class pointer a, derived class object in adresini assign etmiştik, ve C++ compiler ın bu assignment a izin verdiğini açıklamıştık, çünkü derived class object in aynı zamanda bir base-class object olduğunu söylemiştik. Aşağıda, Figure 13.2 de, bu yaklaşımın tam tersini uyguladık, yani derived class pointer a, base class object in adresini verdik. ) Lines 8 9 of Fig create a CommissionEmployee object, and line 10 creates a BasePlusCommissionEmployee pointer. ( Figure13.2 de, Satırlarda CommissionEmployee object create edilir. 10 satırda BasePlusCommissionEmployee pointer ı create edilir. ) Line 14 attempts to assign the address of base-class object commissionemployee to derived-class pointer basepluscommissionemployeeptr, but the compiler generates an error. ( 14. Satırda, base class object in adresi, derived class pointer a assign edilir. Ama compiler error generate eder. Neyi neye assign edebilirsin şöyle açıklayayım da aklında kalsın. Pointer ın type ına bakarsın. Pointer ın type ına uygun bir şey assign etmelisin pointer a. Mesela base class pointer olsun. Bu pointer a bir adres i assign edeceğiz ya hani, işte bu adres doğru olmalı, bu adres base class object in adresi de olabilir, derived class object in adresi de. Sonuç da her ikisi de base class ın object idirler hiyerarşide. Ancak derived class pointer a, base class object in adresini veremeyiz. Mesela Mercedes* = CarObject diyemeyiz, çünkü derived class pointer a assign edeceğimiz adres, pointer type ına uygun olmalıdır, diğer bir deyişle is a relationship olmalıdır. CarObject is not Mercedes. Dolayısıyla bu assignment olmaz. ) The compiler prevents this assignment, because a CommissionEmployee is not a BasePlusCommissionEmployee. ( Compiler bu assignment ı engeller, bu assignment a izin vermez. Çünkü CommissionEmployee object i, BasePlusCommissionEmployee object i değildir, yani base class object i, derived class object i değildir. Bunun tersi doğru olduğu için, bir önceki section daki assignment a izin veriliyordu. ) Consider the consequences if the compiler were to allow this assignment. Through a BasePlusCommissionEmployee pointer, we can invoke every BasePlusCommissionEmployee

6 member function, including setbasesalary, for the object to which the pointer points (i.e., the base-class object commissionemployee). ( Compiler eğer bu assignment a izin verseydi, bunun olası sonuçları ne olurdu düşünelim. Derived class pointer ı aracılığıyla, derived class ın tüm member function ları (setbasesalary() fonksiyonu da dahil, ki bu fonksiyon pointer ın point ettiği object için çağırılır.) çağırılabilir. ) However, the CommissionEmployee object does not provide a setbasesalary member function, nor does it provide a basesalary data member to set. This could lead to problems, because member function setbasesalary would assume that there is a basesalary data member to set at its usual location in a BasePlusCommissionEmployee object. This memory does not belong to the CommissionEmployee object, so member function setbasesalary might overwrite other important data in memory, possibly data that belongs to a different object. ( Ancak, CommissionEmployee object, setbasesalary() member function ı provide etmez, basesalary isimli member data da provide etmez hatta. Bu member function ve member data sadece derived class da vardır yani. Bu da problemlere neden olabilir, çünkü setbasesalary member function ı, basesalary isimli bir data member ın varolduğunu assume eder, peki bu data member ın nerede olduğunu assume eder, olağan location ında, BasePlusCommissionEmployee object inde olduğunu assume eder. Böyle bir memory(basesalary), CommissionEmployee object nde yoktur, dolayısıyla setbasesalary isimli member function memory daki önemli dataların üzerine overwrite edebilir, muhtemelen farklı bir object in data sı üzerine overwrite eder.)

7 Derived-Class Member-Function Calls via Base-Class Pointers Off a base-class pointer, the compiler allows us to invoke only baseclass member functions. Thus, if a base-class pointer is aimed at a derivedclass object, and an attempt is made to access a derived-class-only member function, a compilation error will occur. ( base class pointer aracılığıyla, sadece base-class member function ların çağırılmasına izin verir compiler. Dolayısıyla, base class pointer, derived class object e point ederse ve derived-class-only member function a erişilmeye çalışılırsa, compilation error olur. Yani derived class da olup, base class da olmayan bir member function a erişilmeye çalışılırsa eğer, compilation error olur. ) Figure 13.3 shows the consequences of attempting to invoke a derived-class member function off a base-class pointer. Line 14 aims commissionemployeeptr at derived-class object basepluscommissionemployee. Recall from Section that this is allowed, because a BasePlusCommissionEmployee is a CommissionEmployee (in the sense that a

8 BasePlusCommissionEmployee object contains all the functionality of a CommissionEmployee object). Lines invoke base-class member functions getfirstname, getlastname, getsocialsecuritynumber, getgrosssales and getcommissionrate off the base-class pointer. All of these calls are legitimate, because BasePlusCommissionEmployee inherits these member functions from CommissionEmployee. ( Figure 13.3 şunu gösterir : base class pointer aracılığıyla, derived class member function ı invoke etme girişimlerinin sonuçlarını gösterir. 14. Satırda, base class pointer, derived class object e point ediyor. Hatırlayalım, compiler buna izin verir. 18. Ve 22. Satırlarda, base-class pointer aracılığıyla, base-class member function lar çağırılır. Bu call ların hepsi yasaldır, çünkü derived class, tüm bu member function ları base class dan miras alır. ) We know that commissionemployeeptr is aimed at a BasePlusCommissionEmployee object, so in lines we attempt to invoke BasePlusCommissionEmployee member functions getbasesalary and setbasesalary. The compiler generates errors on both of these calls, because they re not made to member functions of base-class CommissionEmployee. ( Base class pointer(commissionemployeeptr) a, derived class object in adresini assign etmiştik. 26. Ve 27. Satırlarda, base-class pointer aracılığıyla derived-class member function lardan ikisini yani getbasesalary ve setbasesalary fonksiyonlarını invoke etme girişiminde bulunuyoruz. Bu function call ların herbirisi için, compiler error generate eder, çünkü invoke edilen function lar(getbasesalary, setbasesalary) CommissionEmployee base class ının member fonksiyonları değildirler. ) The handle can be used to invoke only those functions that are members of that handle s associated class type. (In this case, off a CommissionEmployee *, we can invoke only CommissionEmployee member functions setfirstname, getfirstname, setlastname, getlastname, setsocialsecuritynumber, getsocialsecuritynumber, setgrosssales, getgrosssales, setcommissionrate, getcommissionrate, earnings and print. ( Handle neydi? Pointer dı. Handle sadece kendisinin type ı ile ilişkili class type larının member function larını invoke etmek için kullanılabilir. Bu örnekte, CommissionEmployee *(base class dır bu) sadece şu CommissionEmployee member function larını invoke edebiliriz: setfirstname, getfirstname, setlastname, getlastname,

9 setsocialsecuritynumber, getsocialsecuritynumber, setgrosssales, getgrosssales, setcommissionrate, getcommissionrate, earnings and print. ) The compiler will allow access to derived-class-only members from a base-class pointer that s aimed at a derived-class object if we explicitly cast the base-class pointer to a derived-class pointer this is known as downcasting.

10 ( Eğer şöyle yaparsak, compiler, derived class object e point eden bir base class pointer aracılığıyla derived-class-only member lara erişmemize izin verir : base class pointer ı, bir derived class pointer a explicitly cast edersek, bu işleme downcasting denir. ) As you know, it s possible to aim a base-class pointer at a derived-class object. However, as we demonstrated in Fig. 13.3, a base-class pointer can be used to invoke only the functions declared in the base class. Downcasting allows a derived-class-specific operation on a derived-class object pointed to by a base-class pointer. After a downcast, the program can invoke derived-class functions that are not in the base class. Downcasting is a potentially dangerous operation. Section 13.8 demonstrates how to safely use downcasting. ( Bildiğiniz gibi, base class pointer ın, derived class pointer a point etmesi mümkündür. Ancak, Figure 13.3 de de gösterildiği gibi, bir base-class pointer sadece baseclass da declare edilmiş olan fonksiyonları invoke etmek için kullanılır. Downcasting ise şuna izin verir : base-class pointer ın point ettiği bir derived-class object de, derived-class-specific operation gerçekleştirilmesine izin verir. Downcast yapıldıktan sonra, program, base-class da olmayan derived-class fonksiyonlarını invoke edebilir. Downcasting yapmak tehlikeli bir iştir. Section 13.8 de güvenli bir şekilde nasıl downcast yapılabileceğini öğreneceğiz. ) Software Engineering Observation 13.3 If the address of a derived-class object has been assigned to a pointer of one of its direct or indirect base classes, it s acceptable to cast that base-class pointer back to a pointer of the derived-class type. In fact, this must be done to send that derived-class object messages that do not appear in the base class. ( Bir derived class object in adresi, bu class ın direct veya indirect base class larından birine pointer a assign edilirse eğer, bu base class pointer ı derived-class type ına cast etmek uygundur. Aslında, base-class da olmayan derived-class'da olan fonksiyonlarını çağırmak için bu yapılmak zorundadır. ) Virtual Functions In Section , we aimed a base-class CommissionEmployee pointer at a derivedclass BasePlusCommissionEmployee object, then invoked member function print through that pointer. Recall that the type of the handle determined which class s functionality to invoke section'da base class pointer'ı derived class object'e point ettirmiştik. Sonra bu pointer aracılığıyla print member fonksiyonunu invoke etmiştik. Hatırlayalım, hangi class'ın fonksiyonunun invoke edileceğini, handle(pointer) type belirliyordu.

11 In that case, the CommissionEmployee pointer invoked the CommissionEmployee member function print on the BasePlusCommissionEmployee object, even though the pointer was aimed at a BasePlusCommissionEmployee object that has its own custom print function. ( Bu durumda, CommissionEmployee(base class) pointer, CommissionEmployee(base class) class'ının member function'ı olan print()'i, BasePlusCommissionEmployee(derived class) object'i üzerinde çağırır, pointer'ın point ettiği BasePlusCommissionEmployee object'inin kendi print fonksiyonu olmasına rağmen, bu print fonksiyonu çağırılmaz. ) Software Engineering Observation 13.4 With virtual functions, the type of the object, not the type of the handle used to invoke the member function, determines which version of a virtual function to invoke. ( virtual fonksiyonlar kullanırsak, hangi virtual function versiyonunun invoke edileceğini, handle'ın type değil, object'in type'ı belirler. ) First, we consider why virtual functions are useful. Suppose that shape classes such as Circle, Triangle, Rectangle and Square are all derived from base class Shape. Önce virtual fonksiyonların neden yararlı olduklarını tartışalım. Circle class'ından şu class'ların derive ettiğini(türediğini) düşünelim : Circle, Triangle, Rectangle and Square. Each of these classes might be endowed with the ability to draw itself via a member function draw. Although each class has its own draw function, the function for each shape is quite different. ( Bu class'ların herbiri kendilerini çizecek draw fonksiyonuna sahiptirler. ) In a program that draws a set of shapes, it would be useful to be able to treat all the shapes generically as objects of the base class Shape. ( Birçok shape çizen bir program düşünelim. Tüm shape'leri, base class Shape'in object'leri gibi düşünmek yararlıdır. ) Then, to draw any shape, we could simply use a base-class Shape pointer to invoke function draw and let the program determine dynamically (i.e., at runtime) which derivedclass draw function to use, based on the type of the object to which the base-class Shape pointer points at any given time.

12 ( Sonra, herhangi bir shape çizmek için, base-class(shape) pointer kullanabiliriz. Bu pointer'a hangi derived class type'ındaki object'in adresi assign edilirse, o derived class'ın draw fonksiyonu invoke edilir(çağırılır). Hangi derived class'ın draw fonksiyonunun çağırılacağına run-time'da karar verir programımız. Diğer bir deyişle, dynamically belirlenir hangi draw fonksiyonunun çağırılacağı. ) To enable this behavior, we declare draw in the base class as a virtual function, and we override draw in each of the derived classes to draw the appropriate shape. From an implementation perspective, overriding a function is no different than redefining one (which is the approach we ve been using until now). ( Bu behaviour'u enable etmek için, base-class'daki draw fonksiyonunu virtaul fonksiyon olarak declare ederiz. Ve herbir derived class'daki draw fonksiyonunu override ederiz. ) An overridden function in a derived class has the same signature and return type (i.e., prototype) as the function it overrides in its base class. ( Derived class'daki overridden function, base-class'daki override edilen function ile aynı signature ve return type'a sahip olmalıdır. ) If we do not declare the base-class function as virtual, we can redefine that function. By contrast, if we declare the base-class function as virtual, we can override that function to enable polymorphic behavior. We declare a virtual function by preceding the function s prototype with the keyword virtual in the base class. ( Base class function'ı virtual olarak declare etmezsek eğer, bu function'ı redefine edebiliriz. Ancak, base class function'ı virtual olarak declare edersek eğer, polymorphic behaviour'ı enable etmek için bu function'ı override edebiliriz. Virtual function nasıl declare edilir, base class'daki function'ın prototype'ının önüne virtual keyword'ünü getirerek. ) For example, virtual void draw() const; would appear in base class Shape. The preceding prototype declares that function draw is a virtual function that takes no arguments and returns nothing. This function is declared const

13 because a draw function typically would not make changes to the Shape object on which it s invoked virtual functions do not have to be const functions. (Örneğin base class Shape'deki virtual draw fonksiyonu böyle declare edilir. Bu fonksiyon, const olarak declare edilmiştir, çünkü draw fonksiyonu, içerisinden invoke edildiği object'i değiştirmez, modify etmez. Ancak virtual fonksiyonlar const function olmak zorunda değildir. ) Software Engineering Observation 13.5 Once a function is declared virtual, it remains virtual all the way down the inheritance hierarchy from that point, even if that function is not explicitly declared virtual when derived class overrides it. ( Bir function virtual olarak declare edilince, bu noktadan itibaren inheritance hiyerarşisinde aşağıya doğru virtual'dır. derived class, base class'daki virtual fonksiyonu override ederken explicity virtual declare edilmese bile. ) Good Programming Practice 13.1 Even though certain functions are implicitly virtual because of a declaration made higher in the class hierarchy, explicitly declare these functions virtual at every level of the class hierarchy to promote program clarity. ( Bazı fonksiyonlar implicitly virtual'durlar, çünkü class hiyerarşisinde üstlerde(base class'larda) virtual declaration explicitly yapılmıştır. Ancak, program'ın daha clear olması için, bu fonksiyonlar tüm aşamalarda explicit bir şekilde virtual keyword ile declare edilmelidirler. Yani base class'da virtual draw fonksiyonu var diyelim. Bu class'ın derived class'larında draw methodu yazarsak, bu methodun signature'ının başına virtual keywordünü koymasak bile bu fonksiyon virtual'dır. Ancak bu fonksiyonların başına virtual keyword'ünü koymak iyi bir alışkanlık olacaktır, daha clear,temiz,net bir program olacaktır, kodumuzu okuyanlar kolaylıkla takip edebilecektir. ) Error-Prevention Tip 13.1 When you browse a class hierarchy to locate a class to reuse, it s possible that a function in that class will exhibit virtual function behavior even though it isn t explicitly declared virtual. This happens when the class inherits a virtual function from its base class, and it can lead to subtle logic errors. Such errors can be avoided by explicitly declaring all virtual functions virtual throughout the inheritance hierarchy.

14 ( Mesela, derived class'da draw methodunu tanımlarken şuna dikkat et. Bu class'ın base class'larında draw methodu virtual olarak declare edilmiş olabilir, dolayısıyla bizim class'ımızdaki draw methodu da implicit bir şekilde virtual'dır. Dolayısıyla base class'daki draw donksiyonunun virtual olduğunu bilmezsek, problem olabilir. Bu yüzden class'ımızın miras aldığı fonksiyonları bilmeli ve buna göre hareket etmeliyiz. Bu gibi error'ları önlemek için class hiyerarşisindeki tüm virtual fonksiyonları explicit bir şekilde virtual keyword'ü ile declare etmeliyiz. ) Software Engineering Observation 13.6 When a derived class chooses not to override a virtual function from its base class, the derived class simply inherits its base class s virtual function implementation. ( Derived class, base class'daki bir virtual fonksiyon'u override etmek zorunda değildir. Override etmeyebilir, bu durumda base class'ın virtual function implementation'ı derived class'a miras yoluyla aktarılır. ) If a program invokes a virtual function through a base-class pointer to a derivedclass object (e.g., shapeptr->draw()) or a base-class reference to a derived-class object (e.g., shaperef.draw()), the program will choose the correct derived-class draw function dynamically (i.e., at execution time) based on the object type not the pointer or reference type. Choosing the appropriate function to call at execution time (rather than at compile time) is known as dynamic binding or late binding. ( derived class object'e point eden bir base-class pointer aracılığıyla, virtual function invoke edilirse, veya derived class object'e refer eden bir base-class reference aracılığıyla virtual function invoke edilirse, program pointer veya reference type'ına göre değil, object'in type'ına göre doğru derived class'ın draw fonksiyonunu dynamically seçer. Execute edilecek fonksiyonun, execution time'da belirlenmesi işlemine dynamic binding veya late binding denir. ) When a virtual function is called by referencing a specific object by name and using the dot member-selection operator (e.g., squareobject.draw()), the function invocation is resolved at compile time (this is called static binding) and the virtual function that s called is the one defined for (or inherited by) the class of that particular object this is not polymorphic behavior.?????????*

15 ( Specific bir object'in ismi ve dot operator kullanılarak, bir virtual function reference edilerek çağırıldığında(mesela squareobject.draw(), hangi fonksiyonun invoke edileceğine compile time'da karar verilir. Buna da static binding denir. Invoke edilen virtual function, specific object'imizin veya bu objecrt'imizin fonksiyonudur, veya bu object'imizin derived class'larının bir fonksiyonudur. ) Thus, dynamic binding with virtual functions occurs only off pointer (and, as we ll soon see, reference) handles. ( Virtual fonksiyonlar kullanırken gerçekleşen dynamic binding sadece pointer handle'lar ile mümkündür. Reference handle'lar ile de mümkündür, bunu da yakında göreceğiz. ) Now let s see how virtual functions can enable polymorphic behavior in our employee hierarchy. Figures are the headers for classes CommissionEmployee and BasePlusCommissionEmployee, respectively. The only new features in these files is that we specify each class s earnings and print member functions as virtual (lines of Fig and lines of Fig. 13.5). Because functions earnings and print are virtual in class CommissionEmployee, class BasePlusCommissionEmployee s earnings and print functions override class CommissionEmployee s. ( Employee class hiyerarşimizde, polymorphic behaviour'ı nasıl kullandığımızı öğrenelim şimdi de. Earnings ve print member function'ları virtual olarak declare edilmiştir. Bu file'lardaki tek değişen şey şu olmuştur: herbir class'ın earnings ve print member function'ları virtual olarak declare edilmiştir. Base class(commissionemployee)'daki earnings ve print member function'ları virtual olarak declare edilmiştir, dolayısıyla derived class(basepluscommissionemployee)'daki earnings ve print member function'ları, base class'ın correspoinding member function'larını override eder. ) Now, if we aim a base-class CommissionEmployee pointer at a derived-class BasePlusCommissionEmployee object, and the program uses that pointer to call either function earnings or print, the BasePlusCommissionEmployee object s corresponding function will be invoked. There were no changes to the member-function implementations of classes CommissionEmployee and BasePlusCommissionEmployee, so we reuse the versions of Figs and

16 ( base-class pointer, derived class object'e point ediyor, program bu pointer aracılığıyla earning veya print member function'larını invoke etmeye çalışınca, derived class'ın earning ve print member function'ları invoke ediliyor. 12. chapter'daki Figure ve 12.15'deki class'ların member implementation'ları değişiklik yapılmadan aşağıda gösterilmiştir: )

17 We modified Fig to create the program of Fig Lines demonstrate again that a CommissionEmployee pointer aimed at a CommissionEmployee object can be used to invoke CommissionEmployee functionality, and a BasePlusCommissionEmployee pointer aimed at a BasePlusCommissionEmployee object can be used to invoke BasePlusCommissionEmployee functionality. Line 54 aims the base-class pointer commissionemployeeptr at derived-class object basepluscommissionemployee. Note that when line 61 invokes member function print off the base-class pointer, the derived-class BasePlusCommissionEmployee s print member function is invoked, so line 61 outputs different text than line 53 does in Fig (when member function print was not declared virtual). We see that declaring a member function virtual causes the program to dynamically determine which function to invoke based on the type of object to which the handle points, rather than on the type of the handle. ( 54. Satırda, base class pointer, derived class object e point(aim) ediyor. 61. Satırda, base-class pointer aracılığıyla, print member functin invoke edilince, derived class ın print() member function ı invoke edilir, dolayısıyla bu programdaki 61. Satır ve Figure 13.1 deki 53. Satır farklı output lar verir. Bu program ve Figure13.1 deki program arasındaki fark şudur: bu programda print member function virtual olarak declare edilmiştir. Yani şunu görmüş oluruz programı çalıştırınca: Bir member function ı virtual olarak declare edersek, program handle ın type ına göre değil, handle ın point ettiği object in type ına göre hangi function ı çağıracağına dynamically karar verir. )

18 Note again that when commissionemployeeptr points to a CommissionEmployee object (line 40), class CommissionEmployee s print function is invoked, and when CommissionEmployeePtr points to a BasePlusCommissionEmployee object, class BasePlusCommissionEmployee s print function is invoked. ( CommissionEmployeePtr(base class), CommissionEmployee(base class) object e point ederse, CommissionEmployee nin print function ı invoke edilir. CommissionEmployeePtr(base class), BasePlusCommissionEmployee(base class) object e point ederse, BasePlusCommissionEmployee nin print function ı invoke edilir. ) Thus, the same message print, in this case sent (off a base-class pointer) to a variety of objects related by inheritance to that base class, takes on many forms this is polymorphic behavior. ( Dolayısıyla, farklı derived class lara point eden base-class pointer aracılığıyla invoke edilen print fonksiyonu farklı biçimler(formlar) alabilir. Bu da polymorphic behaviour olarak bilinir. )

19 Static binding in nasıl gerçekleştiğini inceleyelim.

20 13.4 Type Fields and switch Statements One way to determine the type of an object is to use a switch statement to check the value of a field in the object. This allows us to distinguish among object types, then invoke an appropriate action for a particular object. For example, in a hierarchy of shapes in which each shape object has a shapetype attribute, a switch statement could check the object s shapetype to determine which print function to call. ( Bir object in type ını saptamak için switch statement kullanılarak object deki bir field ın değeri check edilir. Bu sayede object type larını birbirinden ayırt edebiliriz, ve belli bir object için uygun olan bir action ı gerçekleştirebiliriz. Örneğin, herbir object in shapetype isimli bir attribute e sahip olduğu bir shape hiyerarşisinde, switch statement kullanılabilir,

21 hangi print function ın çağırılacağına object in shapetype attribute check edilerek karar verilebilir. ) Using switch logic exposes programs to a variety of potential problems. For example, you might forget to include a type test when one is warranted, or might forget to test all possible cases in a switch statement. When modifying a switch-based system by adding new types, you might forget to insert the new cases in all relevant switch statements. Every addition or deletion of a class requires the modification of every switch statement in the system; tracking these statements down can be time consuming and error prone. ( switch kullanmak şu olası problemlere yol açabilir: Örneğin, bazı type ları check edip, bazı type ları check etmeyi unutursak problem olur. Örneğin, yeni bir type implement ettikten sonra switch-based system i modify ederken, yeni case i tüm ilgili switch statement larına eklemeyi unutursak problem olur. Bir class ın eklenmesi veya silinmesi, sistemdeki tüm switch statement larını modify etmeyi gerektirir, bu statement ları takip etmek zaman alıcıdır ve hata yapma olasılığı yüksektir. ) Software Engineering Observation 13.7 Polymorphic programming can eliminate the need for switch logic. By using the polymorphism mechanism to perform the equivalent logic, you can avoid the kinds of errors typically associated with switch logic. ( Polymorphic programming switch logic e olan ihtiyacı ortadan kaldırır. Polymorphism mekanizması kullanarak, aynı mantığı uygulayabiliriz, ayrıca switchlogic deki muhtemel error ları da önlemiş oluruz. ) Software Engineering Observation 13.8 An interesting consequence of using polymorphism is that programs take on a simplified appearance. They contain less branching logic and simpler sequential code. This simplification facilitates testing, debugging and program maintenance. ( Polymorphism kullanmanın ilginç bir sonucu ise şudur : programlar daha sadeleştirilmiş, daha az komplex görünür. ) 13.5 Abstract Classes and Pure virtual Functions When we think of a class as a type, we assume that programs will create objects of that type. However, there are cases in which it s useful to define classes from which you never intend to instantiate any objects. Such classes are called abstract classes. Because these classes normally are used as base classes in inheritance hierarchies, we refer to them as abstract base classes. These classes cannot be used to instantiate objects, because, as we ll soon see, abstract classes are incomplete derived classes must define the missing pieces before objects of these classes can be instantiated. We build programs with abstract classes in Section 13.6.

22 ( Bir class ı bir type gibi düşünürsek, programların bu type dan bir object create edeceklerini assume ederiz. Ancak, kendisinden object create etmeyeceğimiz bazı class lar define etmek de isteyebiliriz bazen. Bu class lara abstract classes denir. Bu class lar inheritance hiyerarşisinde genelde base class olarak kullanıldıkları için, bu class lara abstract base classes da denir. Bu class lardan object instantiate edilemez(object create edilemez), çünkü abstract class lar incomplete dirler(tamamlanmamıştırlar),derived class lar bu eksik kısımları tamamlamalıdırlar ki bu class lardan object instantiate edilebilsin. ) Classes that can be used to instantiate objects are called concrete classes. Such classes define or inherit implementations for every member function they declare. We could have an abstract base class TwoDimensionalShape and derive such concrete classes as Square, Circle and Triangle. ( Kendisinden object create edilebilen class lara concrete class denir. Bu class lardaki declare edilen tüm fonksiyonlar define edilmiştirler, veya implementation ları miras almıştırlar. Örneğin, TwoDimensionalShape isimli bir abstract base class ımız olsun. Squrare, Circle ve Triangle isimli concrete class larımız olsun. ) Abstract base classes are too generic to define real objects; we need to be more specific before we can think of instantiating objects. -optional reading- For example, if someone tells you to draw the two-dimensional shape, what shape would you draw? Concrete classes provide the specifics that make it reasonable to instantiate objects. An inheritance hierarchy does not need to contain any abstract classes, but many object-oriented systems have class hierarchies headed by abstract base classes. In some cases, abstract classes constitute the top few levels of the hierarchy. A good example of this is the shape hierarchy in Fig. 12.3, which begins with abstract base class Shape. On the next level of the hierarchy we have two more abstract base classes TwoDimensionalShape and ThreeDimensionalShape. The next level of the hierarchy defines concrete classes for two-dimensional shapes (namely, Circle, Square and Triangle) and for three-dimensional shapes (namely, Sphere, Cube and Tetrahedron). -- Pure Virtual Functions A class is made abstract by declaring one or more of its virtual functions to be pure. A pure virtual function is specified by placing = 0 in its declaration, as in virtual void draw() const = 0; // pure virtual function The = 0 is a pure specifier. Pure virtual functions do not provide implementations. Every concrete derived class must override all base-class pure virtual functions with concrete implementations of those functions.

23 ( Bir class ın içerdiği virtual function ların biri pure yapılırsa, bu class abstract olur. Virtual bir function declare edilirken, =0 ile specify edersek, bu function, pure virtual function olur. Pure virtual function lar implement edilmemiştirler. Abstract base class dan concrete derived class create etmek istiyorsak, base-class daki pure virtual function ları derived class da override etmek zorundayız. ) The difference between a virtual function and a pure virtual function is that a virtual function has an implementation and gives the derived class the option of overriding the function; by contrast, a pure virtual function does not provide an implementation and requires the derived class to override the function for that derived class to be concrete; otherwise the derived class remains abstract. ( virtual function ve pure virtual function arasındaki fark nedir? Virtual function implement edilmiştir, dolayısıyla derived class bu function ı override etme ve etmeme seçeneğine sahiptir. Ancak pure virtual function, implementation a sahip değildir, object create edilebilen bir class(concrete class) ortaya çıkarmak için, base class daki pure virtual function override edilmek zorundadır(yani base class da implement edilmemiş, derived class da implement edilmek zorunda), aksi takdirde derived class da abstract class olarak kalır. ) Pure virtual functions are used when it does not make sense for the base class to have an implementation of a function, but you want all concrete derived classes to implement the function. Returning to our earlier example of space objects, it does not make sense for the base class SpaceObject to have an implementation for function draw (as there is no way to draw a generic space object without having more information about what type of space object is being drawn). An example of a function that would be defined as virtual (and not pure virtual) would be one that returns a name for the object. We can name a generic SpaceObject (for instance, as "space object"), so a default implementation for this function can be provided, and the function does not need to be pure virtual. The function is still declared virtual, however, because it s expected that derived classes will override this function to provide more specific names for the derived-class objects. ( Peki bir function ı neden pure virtual yapmak isteyelim? Veya neden virtual yapmak isteyelim? Base class daki bir fonksiyonu implement etmek mantıksız olacaktır mesela, pure virtual function kullanırız dolayısıyla, derived class larda da bu function ı implement etmek isteriz. Örneğin SpaceObject class ındaki draw fonksiyonunu implement etmek mantıksız olacaktır, çünkü şekli belli değil, ancak bu class ın derived class larında draw function ı implement etmek gerekecektir. Dolayısıyla SpaceObject class ındaki draw() fonksiyonu pure virtual olmalıdır, concrete derived class lar bunu overide etmelidirler. Mesela SpaceObject in ismini return eden fonksiyonu düşünelim. Her SpaceObject in bir ismi olacaktır mutlaka, base class da olsa, derived class da olsa. Dolayısıyla, pure virtual function değil, virtual function olacaktır bu. Ancak bu fonksiyon da gene virtual olarak declare edilmiştir, çünkü derived class object ler daha specific isimlere sahip oldukları için, derived class ların bu function ı overide etmeleri umulur. )

24 Software Engineering Observation 13.9 An abstract class defines a common public interface for the various classes in a class hierarchy. An abstract class contains one or more pure virtual functions that concrete derived classes must override. ( Bir abstract class, bir veya daha fazla pure virtual function içerir, concrete derived class'lar bu function'ları override etmek zorundadırlar. ) Common Programming Error 13.1 Failure to override a pure virtual function in a derived class makes that class abstract. Attempting to instantiate an object of an abstract class causes a compilation error. (derived class'da eğer pure virtual function'ı override etmezsek, bu class abstract olarak kalır. Abstract class'dan obje t instantiate etmeye çalışmak compilation error'a neden olur.) Software Engineering Observation An abstract class has at least one pure virtual function. An abstract class also can have data members and concrete functions (including constructors and destructors), which are subject to the normal rules of inheritance by derived classes. Although we cannot instantiate objects of an abstract base class, we can use the abstract base class to declare pointers and references that can refer to objects of any concrete classes derived from the abstract class. Programs typically use such pointers and references to manipulate derived-class objects polymorphically. ( Abstract base class type'ındaki bir pointer veya reference, bu class'dan derive etmiş bir concrete derived class'ın object'ine point edebilir. Derived class object'leri polymorphically manipulate etmek için, bu gibi pointer'lar ve reference'lar kullanılabilir. ) Device Drivers and Polymorphism An object-oriented operating system might use an abstract base class to provide an interface appropriate for all device drivers. Then, through inheritance from that abstract base class, derived classes are formed that all operate similarly. The capabilities (i.e., the public functions) offered by the device drivers are provided as pure virtual functions in the abstract base class. The implementations of these pure virtual functions are provided in the derived classes that correspond to the specific types of device drivers. This architecture also allows new devices to be added to a system easily, even after the operating system has been defined. The user can just plug in the device and install its new device driver. The operating system talks to this new device through its device driver, which has the same public member functions as all other device drivers - those defined in the device driver abstract base class. Object Oriented bir OS, tüm device driver'lar için uygun bir interface sağlamak amacıyla, abstract base class kullanır. Sonra inheritance aracılığıyla, bu abstract base class'dan derive eden class'lar da benzer şekilde çalışır. Device driver'lar tarafından sağlanan capability'ler, abstract base class'da pure virtual function'dırlar. Bu pure virtual function'ların implementation'ları derived class'larda sağlanır. Bu mimari sisteme yeni device'ların da

25 kolaylıkla eklenmesini sağlar. Kullanıcı sadece device'ı bağlar, ve yeni device driver'ı kolaylıkla install eder. Operating system bu yeni device ile, yüklenmiş olan device driver aracılığıyla konuşur. Bu device driver da diğer device driverlar ile aynı public member function'lara sahiptir, abstract base class'daki public member function'lar ile aynıdır. Iterators and Polymorphism It s common in object-oriented programming to define an iterator class that can traverse all the objects in a container (such as an array). For example, a program can print a list of objects in a vector by creating an iterator object, then using the iterator to obtain the next element of the list each time the iterator is called. ( Bir container(mesela array)'daki tüm object'leri traverse edebilecek bir iterator class define etmek oop'da sıklıkla yapılır. Örneğin, bir program, bir vector'deki object'lerin listesini print etmek isteyebilir. Bunun için bir iterator object create edip, bu iterator object'in her çağırılışında listedeki bir sonraki eleman obtain edilir(elde edilir). ) Iterators often are used in polymorphic programming to traverse an array or a linked list of pointers to objects from various levels of a hierarchy. The pointers in such a list are all base-class pointers. (Chapter 22, Standard Template Library (STL), presents a thorough treatment of iterators.) ( Polymorphic programlama'da iterator'lar şunlar için kullanılabilir : hiyerarşide farklı level'lerdeki object'lere pointer'ları içeren linked list veya array'leri traverse etmek için. Böyle bir listenin elemanları olan pointer'lar, base-class pointer'larıdır. ) A list of pointers to objects of the base class TwoDimensionalShape could contain pointers to objects of the classes Square, Circle, Triangle and so on. Using polymorphism to send a draw message, off a TwoDimensionalShape * pointer, to each object in the list would draw them correctly on the screen. ( Base class TwoDimensionalShape'in objectlerine pointer'ları içeren bir list, derived class'ların object'lerine pointer da içerebilir. Nasıl yani? ) 13.6 Case Study: Payroll System Using Polymorphism A company pays its employees weekly. The employees are of three types: Salaried employees : are paid a fixed weekly salary regardless of the number of hours worked, Commission employees : are paid a percentage of their sales, and Base-salary-plus-commission-employees : receive a base salary plus a percentage of their sales. For the current pay period, the company has decided to reward base-salary-pluscommission-employees by adding 10 percent to their base salaries. The company wants to implement a C++ program that performs its payroll calculations polymorphically. ( Bir şirket, çalışanlarının maaşlarını haftalık olarak ödüyor. 3 çeşit çalışan var :

26 Salaried employees : Bu çalışanlara sabit bir maaş ödenir. Çalıştıkları saat miktarına bakılmaksızın, maaşları sabittir. Commission employees : Bu çalışanlara, yaptıkları satışın belirli bir yüzdesi ödenir. Base-salary-plus-commission-employees: Sabit bir maaş + Satışın belirli bir yüzdesi. Şirket, Base-salary-plus-commission-employees type'ındaki çalışanları, sabit maaş kısmına yüzde 10 zam yaparak ödüllendirmeye karar veriyor. Şirket maaş hesaplamalarını polymorphically yapan bir C++ programı implement etmek istiyor. ) Aşağıdaki gibi bir class hieararchy inşaa ederiz. The abstract class name Employee is italicized, as per the convention of the UML. Abstract base class Employee declares the interface to the hierarchy that is, the set of member functions that a program can invoke on all Employee objects. Each employee, regardless of the way his or her earnings are calculated, has a first name, a last name and a social security number, so private data members firstname, lastname and socialsecuritynumber appear in abstract base class Employee. ( Tüm Employee object'lerinde invoke edilebilecek member function'lar, abstract base class Employee içinde declare edilir. BU class hiyerarşinin interface'ini declare eder. Çalışan type'ına bakılmaksızın, tüm çalışanlar şu data member'lara sahiptir : first name, a last name, a social security number. Dolayısıyla bu private data member'lar abstract base class Employee'de declare edilirler. ) Software Engineering Observation optional reading- A derived class can inherit interface and/or implementation from a base class. Hierarchies designed for implementation inheritance tend to have their functionality high in the hierarchy - each new derived class inherits one or more member functions that were

27 defined in a base class, and the derived class uses the base-class definitions. Hierarchies designed for interface inheritance tend to have their functionality lower in the hierarchy - a base class specifies one or more functions that should be defined for each class in the hierarchy (i.e., they have the same prototype), but the individual derived classes provide their own implementations of the function(s). -- The following sections implement the Employee class hierarchy. The first five each implement one of the abstract or concrete classes. The last section implements a test program that builds objects of all these classes and processes the objects polymorphically Creating Abstract Base Class Employee Class Employee provides functions earnings and print, in addition to various get and set functions that manipulate Employee s data members. An earnings function certainly applies generically to all employees, but each earnings calculation depends on the employee s class. So we declare earnings as pure virtual in base class Employee because a default implementation does not make sense for that function - there is not enough information to determine what amount earnings should return. Each derived class overrides earnings with an appropriate implementation. To calculate an employee s earnings, the program assigns the address of an employee s object to a base class Employee pointer, then invokes the earnings function on that object. ( Employee isimli abstract base class ımızı implement edelim. Earnings isimli function tüm employee lerde invoke edilebilir olmalıdır, ancak herbir farklı employee class için, farklı bir earning hesaplaması yapılmalıdır. Bu function, base class Employee de pure virtual olarak declare edilmelidir. Çünkü bu function için default implementation olması anlamsızdır. ) We maintain a vector of Employee pointers, each of which points to an Employee object. Of course, there cannot be Employee objects, because Employee is an abstract class because of inheritance, however, all objects of all derived classes of Employee may nevertheless be thought of as Employee objects. The program iterates through the vector and calls function earnings for each Employee object. C++ processes these function calls polymorphically. Including earnings as a pure virtual function in Employee forces every direct derived class of Employee that wishes to be a concrete class to override earnings. ( Employee pointer larından oluşan bir sağlıyoruz. Bu pointer lardan herbiri bir Employee object e point ediyor. Tabi Employee object e point ediyor derken şunu kastediyoruz aslında: Employee object var olamaz, Employee class ından object create edilemez. Çünkü Employee abstract bir class dır. Ama Employee class ının derived class larının object leri Employee object ler gibi düşünülebilir. Yani Employee pointer ları, Employee object lerine point ediyor derken, kastettiğimiz Employee object bu şekildedir. ) Function print in class Employee displays the first name, last name and social security number of the employee. As we ll see, each derived class of Employee overrides function print to output the employee s type (e.g., "salaried employee:") followed by the rest of

Object-Oriented Programming Laboratuvar 11

Object-Oriented Programming Laboratuvar 11 Object-Oriented Programming Laboratuvar 11 19.12.2017 We use abstract class Employee to represent the general concept of an employee. The classes that derive directly from Employee are SalariedEmployee

Detaylı

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 203 Veri Yapıları ve Algoritmalar I GENEL DERS BİLGİLERİ Öğretim Elemanı : İzzet TAMER Ofis : MUH 311 Ofis Saatleri : Pazartesi: 14:10 15:00, Salı:

Detaylı

Virtualmin'e Yeni Web Sitesi Host Etmek - Domain Eklemek

Virtualmin'e Yeni Web Sitesi Host Etmek - Domain Eklemek Yeni bir web sitesi tanımlamak, FTP ve Email ayarlarını ayarlamak için yapılması gerekenler Öncelikle Sol Menüden Create Virtual Server(Burdaki Virtual server ifadesi sizi yanıltmasın Reseller gibi düşünün

Detaylı

Unlike analytical solutions, numerical methods have an error range. In addition to this

Unlike analytical solutions, numerical methods have an error range. In addition to this ERROR Unlike analytical solutions, numerical methods have an error range. In addition to this input data may have errors. There are 5 basis source of error: The Source of Error 1. Measuring Errors Data

Detaylı

WEEK 11 CME323 NUMERIC ANALYSIS. Lect. Yasin ORTAKCI.

WEEK 11 CME323 NUMERIC ANALYSIS. Lect. Yasin ORTAKCI. WEEK 11 CME323 NUMERIC ANALYSIS Lect. Yasin ORTAKCI yasinortakci@karabuk.edu.tr 2 INTERPOLATION Introduction A census of the population of the United States is taken every 10 years. The following table

Detaylı

CmpE 320 Spring 2008 Project #2 Evaluation Criteria

CmpE 320 Spring 2008 Project #2 Evaluation Criteria CmpE 320 Spring 2008 Project #2 Evaluation Criteria General The project was evaluated in terms of the following criteria: Correctness (55 points) See Correctness Evaluation below. Document (15 points)

Detaylı

Inheritance. Inheritance (turetim)

Inheritance. Inheritance (turetim) Inheritance (turetim) Bir cok problemin cozumu icin belirlenen class lar hierarsik bir yapi seklinde organize edilebilir C++ gibi bir cok Object-oriented diller class benzerliklerinin etkin bir sekilde

Detaylı

Bağlaç 88 adet P. Phrase 6 adet Toplam 94 adet

Bağlaç 88 adet P. Phrase 6 adet Toplam 94 adet ÖNEMLİ BAĞLAÇLAR Bu liste YDS için Önemli özellikle seçilmiş bağlaçları içerir. 88 adet P. Phrase 6 adet Toplam 94 adet Bu doküman, YDS ye hazırlananlar için dinamik olarak oluşturulmuştur. 1. although

Detaylı

Argumentative Essay Nasıl Yazılır?

Argumentative Essay Nasıl Yazılır? Argumentative Essay Nasıl Yazılır? Hüseyin Demirtaş Dersimiz: o Argumentative Essay o Format o Thesis o Örnek yazı Military service Outline Many countries have a professional army yet there is compulsory

Detaylı

First Stage of an Automated Content-Based Citation Analysis Study: Detection of Citation Sentences

First Stage of an Automated Content-Based Citation Analysis Study: Detection of Citation Sentences First Stage of an Automated Content-Based Citation Analysis Study: Detection of Citation Sentences Zehra Taşkın, Umut Al & Umut Sezen {ztaskin, umutal, u.sezen}@hacettepe.edu.tr - 1 Plan Need for content-based

Detaylı

IDENTITY MANAGEMENT FOR EXTERNAL USERS

IDENTITY MANAGEMENT FOR EXTERNAL USERS 1/11 Sürüm Numarası Değişiklik Tarihi Değişikliği Yapan Erman Ulusoy Açıklama İlk Sürüm IDENTITY MANAGEMENT FOR EXTERNAL USERS You can connect EXTERNAL Identity Management System (IDM) with https://selfservice.tai.com.tr/

Detaylı

a, ı ı o, u u e, i i ö, ü ü

a, ı ı o, u u e, i i ö, ü ü Possessive Endings In English, the possession of an object is described by adding an s at the end of the possessor word separated by an apostrophe. If we are talking about a pen belonging to Hakan we would

Detaylı

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING) 1 BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING) 6 LECTURE 10: STRUCTURES Lecturer: Burcu Can BBS 514 - Yapısal Programlama (Structured Programming) Structures (Yapılar) A structure is a collection

Detaylı

AB surecinde Turkiyede Ozel Guvenlik Hizmetleri Yapisi ve Uyum Sorunlari (Turkish Edition)

AB surecinde Turkiyede Ozel Guvenlik Hizmetleri Yapisi ve Uyum Sorunlari (Turkish Edition) AB surecinde Turkiyede Ozel Guvenlik Hizmetleri Yapisi ve Uyum Sorunlari (Turkish Edition) Hakan Cora Click here if your download doesn"t start automatically AB surecinde Turkiyede Ozel Guvenlik Hizmetleri

Detaylı

MM103 E COMPUTER AIDED ENGINEERING DRAWING I

MM103 E COMPUTER AIDED ENGINEERING DRAWING I MM103 E COMPUTER AIDED ENGINEERING DRAWING I ORTHOGRAPHIC (MULTIVIEW) PROJECTION (EŞLENİK DİK İZDÜŞÜM) Weeks: 3-6 ORTHOGRAPHIC (MULTIVIEW) PROJECTION (EŞLENİK DİK İZDÜŞÜM) Projection: A view of an object

Detaylı

1 - Type aliases (typedef / using)

1 - Type aliases (typedef / using) Table of Contents - Type aliases (typedef / using) 5 - Unions 7 - Anonymous unions 8 -Enumerated types (enum) 0 - Enumerated types with enum class - Type aliases (typedef / using) A type alias is a different

Detaylı

WEEK 4 BLM323 NUMERIC ANALYSIS. Okt. Yasin ORTAKCI.

WEEK 4 BLM323 NUMERIC ANALYSIS. Okt. Yasin ORTAKCI. WEEK 4 BLM33 NUMERIC ANALYSIS Okt. Yasin ORTAKCI yasinortakci@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi BLM33 NONLINEAR EQUATION SYSTEM Two or more degree polinomial

Detaylı

const objects & const member functions const objects ve const functions Data Member Initializer List Data Member Initializer List

const objects & const member functions const objects ve const functions Data Member Initializer List Data Member Initializer List const objects & const member functions Principle of Least Privilege: Bir software parcasina sadece kesin olarak ihtiyac duyulani ver. Bu yolla bir cok muhtemel hata yakalanabilir ve bu hatalardan sakinilabilinir

Detaylı

ATILIM UNIVERSITY Department of Computer Engineering

ATILIM UNIVERSITY Department of Computer Engineering ATILIM UNIVERSITY Department of Computer Engineering COMPE 350 Numerical Methods Fall, 2011 Instructor: Fügen Selbes Assistant: İsmail Onur Kaya Homework: 1 Due date: Nov 14, 2011 You are designing a spherical

Detaylı

A UNIFIED APPROACH IN GPS ACCURACY DETERMINATION STUDIES

A UNIFIED APPROACH IN GPS ACCURACY DETERMINATION STUDIES A UNIFIED APPROACH IN GPS ACCURACY DETERMINATION STUDIES by Didem Öztürk B.S., Geodesy and Photogrammetry Department Yildiz Technical University, 2005 Submitted to the Kandilli Observatory and Earthquake

Detaylı

Yüz Tanımaya Dayalı Uygulamalar. (Özet)

Yüz Tanımaya Dayalı Uygulamalar. (Özet) 4 Yüz Tanımaya Dayalı Uygulamalar (Özet) Günümüzde, teknolojinin gelişmesi ile yüz tanımaya dayalı bir çok yöntem artık uygulama alanı bulabilmekte ve gittikçe de önem kazanmaktadır. Bir çok farklı uygulama

Detaylı

Ardunio ve Bluetooth ile RC araba kontrolü

Ardunio ve Bluetooth ile RC araba kontrolü Ardunio ve Bluetooth ile RC araba kontrolü Gerekli Malzemeler: 1) Arduino (herhangi bir model); bizim kullandığımız : Arduino/Geniuno uno 2) Bluetooth modül (herhangi biri); bizim kullandığımız: Hc-05

Detaylı

4. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI.

4. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI. 4. HAFTA BLM33 SAYISAL ANALİZ Okt. Yasin ORTAKCI yasinortakci@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi BLM33 NONLINEAR EQUATION SYSTEM Two or more degree polinomial

Detaylı

BBM Discrete Structures: Midterm 2 Date: , Time: 16:00-17:30. Question: Total Points: Score:

BBM Discrete Structures: Midterm 2 Date: , Time: 16:00-17:30. Question: Total Points: Score: BBM 205 - Discrete Structures: Midterm 2 Date: 8.12.2016, Time: 16:00-17:30 Ad Soyad / Name: Ögrenci No /Student ID: Question: 1 2 3 4 5 6 7 Total Points: 12 22 10 10 15 16 15 100 Score: 1. (12 points)

Detaylı

Exercise 2 Dialogue(Diyalog)

Exercise 2 Dialogue(Diyalog) Going Home 02: At a Duty-free Shop Hi! How are you today? Today s lesson is about At a Duty-free Shop. Let s make learning English fun! Eve Dönüş 02: Duty-free Satış Mağazasında Exercise 1 Vocabulary and

Detaylı

YEDİTEPE ÜNİVERSİTESİ MÜHENDİSLİK VE MİMARLIK FAKÜLTESİ

YEDİTEPE ÜNİVERSİTESİ MÜHENDİSLİK VE MİMARLIK FAKÜLTESİ ÖĞRENCİ NİN STUDENT S YEDİTEPE ÜNİVERSİTESİ STAJ DEFTERİ TRAINING DIARY Adı, Soyadı Name, Lastname : No ID Bölümü Department : : Fotoğraf Photo Öğretim Yılı Academic Year : Academic Honesty Pledge I pledge

Detaylı

Islington da Pratisyen Hekimliğinizi ziyaret ettiğinizde bir tercüman istemek. Getting an interpreter when you visit your GP practice in Islington

Islington da Pratisyen Hekimliğinizi ziyaret ettiğinizde bir tercüman istemek. Getting an interpreter when you visit your GP practice in Islington Islington da Pratisyen Hekimliğinizi ziyaret ettiğinizde bir tercüman istemek Getting an interpreter when you visit your GP practice in Islington Islington daki tüm Pratisyen Hekimlikler (GP) tercümanlık

Detaylı

econn (Supplier Portal) of the MANN+HUMMEL Group

econn (Supplier Portal) of the MANN+HUMMEL Group econn (Supplier Portal) of the MANN+HUMMEL Group October 2016 1 econn CONNECTED FOR SUCCESS Support If you have any questions or technical issues during the registration please contact: Teknik sorularınız

Detaylı

Teknoloji Servisleri; (Technology Services)

Teknoloji Servisleri; (Technology Services) Antalya International University Teknoloji Servisleri; (Technology Services) Microsoft Ofis Yazılımları (Microsoft Office Software), How to Update Office 365 User Details How to forward email in Office

Detaylı

Do not open the exam until you are told that you may begin.

Do not open the exam until you are told that you may begin. ÖRNEKTİR ÖRNEKTİR ÖRNEKTİR ÖRNEKTİR ÖRNEKTİR OKAN ÜNİVERSİTESİ FEN EDEBİYAT FAKÜLTESİ MATEMATİK BÖLÜMÜ 03.11.2011 MAT 461 Fonksiyonel Analiz I Ara Sınav N. Course ADI SOYADI ÖĞRENCİ NO İMZA Do not open

Detaylı

YEDİTEPE ÜNİVERSİTESİ MÜHENDİSLİK VE MİMARLIK FAKÜLTESİ

YEDİTEPE ÜNİVERSİTESİ MÜHENDİSLİK VE MİMARLIK FAKÜLTESİ MÜHENDİSLİK VE MİMARLIK FAKÜLTESİ STAJ DEFTERİ TRAINING DIARY Adı, Soyadı Name, Lastname : ÖĞRENCİ NİN STUDENT S No ID Bölümü Department : : Fotoğraf Photo Öğretim Yılı Academic Year : Academic Honesty

Detaylı

D-Link DSL 500G için ayarları

D-Link DSL 500G için ayarları Celotex 4016 YAZILIM 80-8080-8081 İLDVR HARDWARE YAZILIM 80-4500-4600 DVR2000 25 FPS YAZILIM 5050-5555-1999-80 EX-3004 YAZILIM 5555 DVR 8008--9808 YAZILIM 80-9000-9001-9002 TE-203 VE TE-20316 SVDVR YAZILIM

Detaylı

Ad Soyad: İmza: Object-Oriented Programming Quiz 4 60dk. Kapalı kitap. Kapalı defter. Kapalı cep telefonu. Hesap makinesi yok.

Ad Soyad: İmza: Object-Oriented Programming Quiz 4 60dk. Kapalı kitap. Kapalı defter. Kapalı cep telefonu. Hesap makinesi yok. Ad Soyad: İmza: Object-Oriented Programming Quiz 4 60dk. Kapalı kitap. Kapalı defter. Kapalı cep telefonu. Hesap makinesi yok. 21.12.2018 1. (30 puan) Aşağıda, aralarında herhangi bir kalıtım (inheritance)

Detaylı

Do not open the exam until you are told that you may begin.

Do not open the exam until you are told that you may begin. OKAN ÜNİVERSİTESİ MÜHENDİSLİK-MİMARLIK FAKÜLTESİ MÜHENDİSLİK TEMEL BİLİMLERİ BÖLÜMÜ 2015.11.10 MAT461 Fonksiyonel Analiz I Arasınav N. Course Adi: Soyadi: Öğrenc i No: İmza: Ö R N E K T İ R S A M P L E

Detaylı

C++ Class larina baslangic. C++ Versus C Object-oriented Language C++ Structure dan Object Create etmek. Structure tanimlama.

C++ Class larina baslangic. C++ Versus C Object-oriented Language C++ Structure dan Object Create etmek. Structure tanimlama. C++ Class larina baslangic Object oriented programming language olarak kullanildiginda, programming in temel birimi class lardir Object lerin create edilmesinde blueprint gorevi gorur Class data (object

Detaylı

Matematik Mühendisliği - Mesleki İngilizce

Matematik Mühendisliği - Mesleki İngilizce Matematik Mühendisliği - Mesleki İngilizce Tanım - Definition Tanım nasıl verilmelidir? Tanım tanımlanan ismi veya sıfatı yeterince açıklamalı, gereğinden fazla detaya girmemeli ve açık olmalıdır. Bir

Detaylı

ZTM112 BİLGİSAYAR DESTETEKLİ ÇİZİM TEKNİĞİ

ZTM112 BİLGİSAYAR DESTETEKLİ ÇİZİM TEKNİĞİ ZTM112 BİLGİSAYAR DESTETEKLİ ÇİZİM TEKNİĞİ Yrd.Doç.Dr.Caner KOÇ Ankara Üniversitesi Ziraat Fakültesi Tarım Makinaları ve Teknolojileri Mühendisliği Bölümü ckoc@ankara.edu.tr Teknik çizim nedir? Bir çizim

Detaylı

"IF CLAUSE KALIPLARI"

IF CLAUSE KALIPLARI "IF CLAUSE KALIPLARI" am / is / are doing have / has done can / have to / must / should be to do was / were did, was / were to do was / were doing had to do should do had done had been doing had had to

Detaylı

Squid i Follow X-Forwarded-For headers Yaması İle Patchlemek

Squid i Follow X-Forwarded-For headers Yaması İle Patchlemek /******************************************************** * Gökhan ALKAN * gokhan [at] enderunix [dot] org * EnderUNIX Yazılım Gelistirme Takımı * http://www.enderunix.org * * Sürüm : 1.0 * Tarih : 27.06.2006

Detaylı

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir; abstract Sınıflar 1 Özet sınıflar ya da özet metotlar abstract anahtar sözcüğü kullanılarak tanımlanırlar. Bir temel sınıf içinde bildirilen abstract metotların içeriği boştur. Kendisinden yeni bir instance

Detaylı

"Şirket" Sunucusu ve Başarı Mobile Arasındaki HTTP Veri Aktarımı için Etkileşim Teknik Protokolü

Şirket Sunucusu ve Başarı Mobile Arasındaki HTTP Veri Aktarımı için Etkileşim Teknik Protokolü "Şirket" Sunucusu ve Başarı Mobile Arasındaki HTTP Veri Aktarımı için Etkileşim Teknik Protokolü BAŞARI Mobile tarafından desteklenmektedir. 1. Genel Bakış Bu döküman ile Şirket Adı nın ve Basari Mobile

Detaylı

Delta Pulse 3 Montaj ve Çalıstırma Kılavuzu. www.teknolojiekibi.com

Delta Pulse 3 Montaj ve Çalıstırma Kılavuzu. www.teknolojiekibi.com Delta Pulse 3 Montaj ve Çalıstırma Kılavuzu http:/// Bu kılavuz, montajı eksiksiz olarak yapılmış devrenin kontrolü ve çalıştırılması içindir. İçeriğinde montajı tamamlanmış devrede çalıştırma öncesinde

Detaylı

BBM Discrete Structures: Final Exam Date: , Time: 15:00-17:00

BBM Discrete Structures: Final Exam Date: , Time: 15:00-17:00 BBM 205 - Discrete Structures: Final Exam Date: 12.1.2017, Time: 15:00-17:00 Ad Soyad / Name: Ögrenci No /Student ID: Question: 1 2 3 4 5 6 7 8 9 10 11 Total Points: 6 16 8 8 10 9 6 8 14 5 10 100 Score:

Detaylı

Newborn Upfront Payment & Newborn Supplement

Newborn Upfront Payment & Newborn Supplement TURKISH Newborn Upfront Payment & Newborn Supplement Female 1: Bebeğim yakında doğacağı için bütçemi gözden geçirmeliyim. Duyduğuma göre, hükümet tarafından verilen Baby Bonus ödeneği yürürlükten kaldırıldı.

Detaylı

public static int Toplam int x, int y

public static int Toplam int x, int y static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.

Detaylı

C ++ Ders 6. Çoklubenzesim

C ++ Ders 6. Çoklubenzesim Ders 6 Çoklubenzesim Çoklubenzesim Farkli siniflardaki nesnelerin ayni fonksiyon çagrilmasina farkli sekilde cevap verebilmesini saglar. Sanal fonksiyonlar araciligiyla uygulanir. Kök-siniftan bir pointer

Detaylı

Yaz okulunda (2014 3) açılacak olan 2360120 (Calculus of Fun. of Sev. Var.) dersine kayıtlar aşağıdaki kurallara göre yapılacaktır:

Yaz okulunda (2014 3) açılacak olan 2360120 (Calculus of Fun. of Sev. Var.) dersine kayıtlar aşağıdaki kurallara göre yapılacaktır: Yaz okulunda (2014 3) açılacak olan 2360120 (Calculus of Fun. of Sev. Var.) dersine kayıtlar aşağıdaki kurallara göre yapılacaktır: Her bir sınıf kontenjanı YALNIZCA aşağıdaki koşullara uyan öğrenciler

Detaylı

const objects & const member functions

const objects & const member functions const objects & const member functions Principle of Least Privilege: Bir yazılım parçasına sadece kesin olarak ihtiyac duyulan karadar erişim izni verilmelidir. Bu yolla bir çok muhtemel hata yakalanabilir

Detaylı

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING)

BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING) 1 BBS 514 YAPISAL PROGRAMLAMA (STRUCTURED PROGRAMMING) LECTURE 3: ASSIGNMENT OPERATOR Lecturer: Burcu Can BBS 514 - Yapısal Programlama (Structured Programming) 2 Lexical Elements (Sözcüksel Elemanlar)

Detaylı

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi Görsel Programlama Metot Yeniden Tanımlama, Metot Aşırı Yükleme, Dinamik Metot Yükleme, Soyut Sınıflar, Soyut Metotlar, Arayüzler, Çoklu Kalıtım, Anonim Sınıflar ve java.lang.object Sınıflar Programcı

Detaylı

A LANGUAGE TEACHER'S PERSONAL OPINION

A LANGUAGE TEACHER'S PERSONAL OPINION 1. Çeviri Metni - 9 Ekim 2014 A LANGUAGE TEACHER'S PERSONAL OPINION Why is English such an important language today? There are several reasons. Why: Neden, niçin Such: gibi Important: Önemli Language:

Detaylı

BLM401 Mobil Cihazlar için ANDROID İşletim Sistemi. SQLite Veritabanı. BLM401 Dr.Refik SAMET

BLM401 Mobil Cihazlar için ANDROID İşletim Sistemi. SQLite Veritabanı. BLM401 Dr.Refik SAMET BLM401 Mobil Cihazlar için ANDROID İşletim Sistemi SQLite Veritabanı BLM401 Dr.Refik SAMET 1 SQLite açık kaynak kodlu; GİRİŞ (1/4) sunucu gerektirmeyen; konfigürasyon ayarları gerektirmeyen; platformdan

Detaylı

HTML 4. Bölüm. Doç. Dr. İsmail Rakıp Karaş Dersin Course Page:

HTML 4. Bölüm. Doç. Dr. İsmail Rakıp Karaş  Dersin Course Page: HTML 4. Bölüm Doç. Dr. İsmail Rakıp Karaş www.ismailkaras.com irkaras@gmail.com (Son Güncelleme: 18.02.2015) Dersin Course Page: www.ismailkaras.com/228 Çerçeveler (Frames) Çerçeve kullanımı her ne kadar

Detaylı

Present continous tense

Present continous tense Present continous tense This tense is mainly used for talking about what is happening now. In English, the verb would be changed by adding the suffix ing, and using it in conjunction with the correct form

Detaylı

Bölüm 4: İş Parçacıkları. Operating System Concepts with Java 8 th Edition

Bölüm 4: İş Parçacıkları. Operating System Concepts with Java 8 th Edition Bölüm 4: İş Parçacıkları 14.1 Silberschatz, Galvin and Gagne 2009 Bölüm 4: İş Parçacıkları Genel Bakış Çoklu İş Parçacığı Modelleri İş Parçacığı Kütüphaneleri İş Parçacıkları ile İlgili Meseleler İşletim

Detaylı

#include <stdio.h> int main(void) { float sayi; float * p; p = &sayi; printf("deger girin:"); scanf("%f", p); printf("girilen deger:%f\n", *p);

#include <stdio.h> int main(void) { float sayi; float * p; p = &sayi; printf(deger girin:); scanf(%f, p); printf(girilen deger:%f\n, *p); Ege University Electrical and Electronics Engineering Introduction to Computer Programming Laboratory Lab 11 - Pointers 1) Pointer syntax. Declare a variable and a pointer with same data type. Assign variable

Detaylı

Seri kablo bağlantısında Windows95/98/ME'ten Windows 2000'e bağlantı Windows95/98/ME - NT4 bağlantısına çok benzer.

Seri kablo bağlantısında Windows95/98/ME'ten Windows 2000'e bağlantı Windows95/98/ME - NT4 bağlantısına çok benzer. Seri kablo bağlantısında Windows95/98/ME'ten Windows 2000'e bağlantı Windows95/98/ME NT4 bağlantısına çok benzer. Direkt Kablo desteğini Windows95/98'e yükledikten sonra, Windows95 for Direct Cable Client

Detaylı

FIHI MA-FIH - NE VARSA ONUN ICINDE VAR BY MEVLANA CELALEDDIN RUMI

FIHI MA-FIH - NE VARSA ONUN ICINDE VAR BY MEVLANA CELALEDDIN RUMI Read Online and Download Ebook FIHI MA-FIH - NE VARSA ONUN ICINDE VAR BY MEVLANA CELALEDDIN RUMI DOWNLOAD EBOOK : FIHI MA-FIH - NE VARSA ONUN ICINDE VAR BY MEVLANA Click link bellow and free register to

Detaylı

HIGH SPEED PVC DOOR INSTALLATION BOOK

HIGH SPEED PVC DOOR INSTALLATION BOOK HIGH SPEED PVC DOOR INSTALLATION BOOK HIZLI PVC KAPI MONTAJ KLAVUZU MODEL FUD 2015.01 MONTAJ KLAVUZU/INSTALLATION BOOK INTRODUCTION The information contained in this manual will allow you to install your

Detaylı

THE IMPACT OF AUTONOMOUS LEARNING ON GRADUATE STUDENTS PROFICIENCY LEVEL IN FOREIGN LANGUAGE LEARNING ABSTRACT

THE IMPACT OF AUTONOMOUS LEARNING ON GRADUATE STUDENTS PROFICIENCY LEVEL IN FOREIGN LANGUAGE LEARNING ABSTRACT THE IMPACT OF AUTONOMOUS LEARNING ON GRADUATE STUDENTS PROFICIENCY LEVEL IN FOREIGN LANGUAGE LEARNING ABSTRACT The purpose of the study is to investigate the impact of autonomous learning on graduate students

Detaylı

BMH-303 Nesneye Yönelik Programlama

BMH-303 Nesneye Yönelik Programlama BMH-303 Nesneye Yönelik Programlama Kurucu metotlar (constructors) ve statik deyimi Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği Kurucu Metotlar (Constructors) Kurucu metot çeşitleri Varsayılan

Detaylı

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler

Bölüm 6. Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler Bölüm 6 Diziler (arrays) Temel kavramlar Tek boyutlu diziler Çok boyutlu diziler Chapter 6 Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Genel Bakış Dizi: Hepsi aynı türde

Detaylı

ÖRNEKTİR - SAMPLE. RCSummer Ön Kayıt Formu Örneği - Sample Pre-Registration Form

ÖRNEKTİR - SAMPLE. RCSummer Ön Kayıt Formu Örneği - Sample Pre-Registration Form RCSummer 2019 - Ön Kayıt Formu Örneği - Sample Pre-Registration Form BU FORM SADECE ÖN KAYIT FORMUDUR. Ön kaydınızın geçerli olması için formda verilen bilgilerin doğru olması gerekmektedir. Kontenjanımız

Detaylı

FINITE AUTOMATA. Mart 2006 Ankara Üniversitesi Bilgisayar Mühendisliği 1

FINITE AUTOMATA. Mart 2006 Ankara Üniversitesi Bilgisayar Mühendisliği 1 FINITE AUTOMATA Mart 2006 Ankara Üniversitesi Bilgisayar Mühendisliği 1 Protocol for e-commerce using e-money Allowed events: P The customer can pay the store (=send the money- File to the store) C The

Detaylı

Yarışma Sınavı A ) 60 B ) 80 C ) 90 D ) 110 E ) 120. A ) 4(x + 2) B ) 2(x + 4) C ) 2 + ( x + 4) D ) 2 x + 4 E ) x + 4

Yarışma Sınavı A ) 60 B ) 80 C ) 90 D ) 110 E ) 120. A ) 4(x + 2) B ) 2(x + 4) C ) 2 + ( x + 4) D ) 2 x + 4 E ) x + 4 1 4 The price of a book is first raised by 20 TL, and then by another 30 TL. In both cases, the rate of increment is the same. What is the final price of the book? 60 80 90 110 120 2 3 5 Tim ate four more

Detaylı

KIMSE KIZMASIN KENDIMI YAZDIM BY HASAN CEMAL

KIMSE KIZMASIN KENDIMI YAZDIM BY HASAN CEMAL KIMSE KIZMASIN KENDIMI YAZDIM BY HASAN CEMAL DOWNLOAD EBOOK : KIMSE KIZMASIN KENDIMI YAZDIM BY HASAN CEMAL Click link bellow and free register to download ebook: KIMSE KIZMASIN KENDIMI YAZDIM BY HASAN

Detaylı

HOW TO MAKE A SNAPSHOT Snapshot Nasil Yapilir. JEFF GOERTZEN / Art director, USA TODAY

HOW TO MAKE A SNAPSHOT Snapshot Nasil Yapilir. JEFF GOERTZEN / Art director, USA TODAY HOW TO MAKE A SNAPSHOT Snapshot Nasil Yapilir JEFF GOERTZEN / Art director, USA TODAY HEADLINE: How many minutes a day do you or someone else walk your dog? 0 minutes 13% 1-19 minutes 24% 20-39 minutes

Detaylı

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Ders 2 Constructor, Destructor lar ve Nesne Yönelimli Programlama Öğeleri ile Nesne Erişim Kontrolü C ++ Constructor - Destructor Fonksiyonların Çağırılması Constructor ve Destructor Fonksiyonlar

Detaylı

12. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI. yasinortakci@karabuk.edu.tr

12. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI. yasinortakci@karabuk.edu.tr 1. HAFTA BLM33 SAYISAL ANALİZ Okt. Yasin ORTAKCI yasinortakci@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi DIVIDED DIFFERENCE INTERPOLATION Forward Divided Differences

Detaylı

KALEIDOSCOPES N.1. Solo Piano. Mehmet Okonşar

KALEIDOSCOPES N.1. Solo Piano. Mehmet Okonşar KALEIDOSCOPES N.1 Solo Piano Mehmet Okonşar Kaleidoscopes, bir temel ses dizisi üzerine kurulmuş ve bunların dönüşümlerini işleyen bir dizi yapıttan oluşmaktadır. Kullanılan bu temel ses dizisi, Alban

Detaylı

Binnur Kurt kurt@cs.itu.edu.tr. Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

Binnur Kurt kurt@cs.itu.edu.tr. Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1 ÇOK ŞEKİLLİLİK Binnur Kurt kurt@cs.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi C++ ile Nesneye Dayalı Programlama 1 Sınıf Yapısı Kalıtım Çok Şekillilik C++ ile Nesneye Dayalı

Detaylı

İŞLETMELERDE KURUMSAL İMAJ VE OLUŞUMUNDAKİ ANA ETKENLER

İŞLETMELERDE KURUMSAL İMAJ VE OLUŞUMUNDAKİ ANA ETKENLER ANKARA ÜNİVERSİTESİ SOSYAL BİLİMLER ENSTİTÜSÜ HALKLA İLİŞKİLER VE TANITIM ANA BİLİM DALI İŞLETMELERDE KURUMSAL İMAJ VE OLUŞUMUNDAKİ ANA ETKENLER BİR ÖRNEK OLAY İNCELEMESİ: SHERATON ANKARA HOTEL & TOWERS

Detaylı

1 I S L U Y G U L A M A L I İ K T İ S A T _ U Y G U L A M A ( 5 ) _ 3 0 K a s ı m

1 I S L U Y G U L A M A L I İ K T İ S A T _ U Y G U L A M A ( 5 ) _ 3 0 K a s ı m 1 I S L 8 0 5 U Y G U L A M A L I İ K T İ S A T _ U Y G U L A M A ( 5 ) _ 3 0 K a s ı m 2 0 1 2 CEVAPLAR 1. Tekelci bir firmanın sabit bir ortalama ve marjinal maliyet ( = =$5) ile ürettiğini ve =53 şeklinde

Detaylı

İZDÜŞÜM. İzdüşümün Tanımı ve Önemi İzdüşüm Metodları Temel İzdüşüm Düzlemleri Noktanın İzdüşümü Doğrunun İzdüşümü Düzlemlerin İz Düşümleri

İZDÜŞÜM. İzdüşümün Tanımı ve Önemi İzdüşüm Metodları Temel İzdüşüm Düzlemleri Noktanın İzdüşümü Doğrunun İzdüşümü Düzlemlerin İz Düşümleri ÖĞR. GÖR.ÖMER UÇTU İZDÜŞÜM İzdüşümün Tanımı ve Önemi İzdüşüm Metodları Temel İzdüşüm Düzlemleri Noktanın İzdüşümü Doğrunun İzdüşümü Düzlemlerin İz Düşümleri İzdüşümün Tanımı ve Önemi İz düşüm: Bir cismin

Detaylı

SBR331 Egzersiz Biyomekaniği

SBR331 Egzersiz Biyomekaniği SBR331 Egzersiz Biyomekaniği Açısal Kinematik 1 Angular Kinematics 1 Serdar Arıtan serdar.aritan@hacettepe.edu.tr Mekanik bilimi hareketli bütün cisimlerin hareketlerinin gözlemlenebildiği en asil ve kullanışlı

Detaylı

Arýza Giderme. Troubleshooting

Arýza Giderme. Troubleshooting Arýza Giderme Sorun Olasý Nedenler Giriþ Gerilimi düþük hata mesajý Þebeke giriþ gerilimi alt seviyenin altýnda geliyor Þebeke giriþ gerilimi tehlikeli derecede Yüksek geliyor Regülatör kontrol kartý hatasý

Detaylı

Cases in the Turkish Language

Cases in the Turkish Language Fluentinturkish.com Cases in the Turkish Language Grammar Cases Postpositions, circumpositions and prepositions are the words or morphemes that express location to some kind of reference. They are all

Detaylı

Neyzen olabilmek için en önemli özellik; sabretmeyi bilmektir. In order to be a neyzen the most important thing is to be patient.

Neyzen olabilmek için en önemli özellik; sabretmeyi bilmektir. In order to be a neyzen the most important thing is to be patient. www.neyzen.com NEY METODU SAYFA 033 NEY METHOD PAGE 033 Yücel Müzik İKİNCİ DEVRE SESLER Öğreneceğimiz NEVÂ, NÎM HİCÂZ, ÇÂRGÂH, SEGÂH, KÜRDÎ, DÜGÂH ve RAST seslerinin tümünü üflerken, aşîrân perdesinin

Detaylı

Kalıtım (Inheritance)

Kalıtım (Inheritance) Kalıtım (Inheritance) Kocaeli Üniversitesi Kalıtım (Inheritance) Kodların çok kez kullanımı (Software reusability) Mevcut Sınıflardan Yeni Sınıflar Oluşturma Mevcut sınıfın değişken ve fonksiyonları kullanılabilir.

Detaylı

Makbul Re y Tefsirinin Yöneldiği Farklı Alanlar. The Different Fields Twords That The Commentary By Judgement Has Gone

Makbul Re y Tefsirinin Yöneldiği Farklı Alanlar. The Different Fields Twords That The Commentary By Judgement Has Gone Ahmet ALABALIK *1 Özet Bilindiği üzere re y tefsiri makbul ve merdut olmak üzere iki kısma ayrılır. Bu makalede makbul olan re y tefsirlerindeki farklı yönelişleri ele aldık. Nitekim re y tefsiri denildiğinde

Detaylı

1. English? a. She is b. Is c. He d. Is she. 1. This is an office, and tables. a. those are b. that are c. these d. that is. 1. This is girlfriend.

1. English? a. She is b. Is c. He d. Is she. 1. This is an office, and tables. a. those are b. that are c. these d. that is. 1. This is girlfriend. 1. English? a. She is b. Is c. He d. Is she 1. This is an office, and tables. a. those are b. that are c. these d. that is 1. This is girlfriend. a. hers b. to him c. of her d. his 1. There are people

Detaylı

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü

Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü Ders 5 Miras Alma Inheritance (Miras) Eski sınıflardan yeni sınıflar yaratılmasıdır. Yeni (türetilmiş) sınıf, eski (kök) sınıfın özellik ve davranışlarını gösterir. Türetilmiş (Derived) sınıf, kök (base)

Detaylı

ENG ACADEMIC YEAR SPRING SEMESTER FRESHMAN PROGRAM EXEMPTION EXAM

ENG ACADEMIC YEAR SPRING SEMESTER FRESHMAN PROGRAM EXEMPTION EXAM ENG111 2016-2017 ACADEMIC YEAR SPRING SEMESTER FRESHMAN PROGRAM EXEMPTION EXAM Exam Type Date / Classes / Time Written Thursday, September 22 nd, 2016 Classes & Time to be announced on September 20th.

Detaylı

Keyestudio SHT31 Temperature and Humidity Module / SHT31 Sıcaklık ve Nem Modülü

Keyestudio SHT31 Temperature and Humidity Module / SHT31 Sıcaklık ve Nem Modülü Keyestudio SHT31 Temperature and Humidity Module / SHT31 Sıcaklık ve Nem Modülü Overview / Genel Bakış This module mainly uses the SHT31 temperature and humidity sensor, which belongs to the SHT3X series

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

Detaylı

TEST RESULTS UFED, XRY and SIMCON

TEST RESULTS UFED, XRY and SIMCON TEST RESULTS UFED, XRY and SIMCON Test material : SIM card Tested software : UFED 3.6, XRY 6.5, SIMcon v1.2 Expected results : Proper extraction of SMS messages Date of the test : 02.04.2013 Note : The

Detaylı

Dersin Türü (Course Type) Zorunlu (Compulsory)[Χ] Seçmeli (Elective) [ ]

Dersin Türü (Course Type) Zorunlu (Compulsory)[Χ] Seçmeli (Elective) [ ] Programın Adı (Program Name) Kodu (Course Code) CS 102 Molecüler Biyoloji ve Genetik (Molecular Biology and Genetics) Adı (Course Name) Türü (Course Type) Zorunlu (Compulsory)[Χ] Seçmeli (Elective) [ ]

Detaylı

Konforun Üç Bilinmeyenli Denklemi 2016

Konforun Üç Bilinmeyenli Denklemi 2016 Mimari olmadan akustik, akustik olmadan da mimarlık olmaz! Mimari ve akustik el ele gider ve ben genellikle iyi akustik görülmek için orada değildir, mimarinin bir parçası olmalı derim. x: akustik There

Detaylı

K12NET ÖĞRENCİ-VELİ PORTALI KULLANIMI USE OF K12NET STUDENT-PARENT PORTAL

K12NET ÖĞRENCİ-VELİ PORTALI KULLANIMI USE OF K12NET STUDENT-PARENT PORTAL K12NET ÖĞRENCİ-VELİ PORTALI KULLANIMI USE OF K12NET STUDENT-PARENT PORTAL 1. K12NET i İnternet Explorer 7, 8 ya da 9 sürümlerinde kullanınız. Firefox, Google Chrome vb. tarayıcılarda açmayınız. Use K12NET

Detaylı

INTRODUCTION TO JAVASCRIPT JAVASCRIPT JavaScript is used in millions of Web pages to improve the design, validate forms, detect browsers, create cookies, and much more. JavaScript is the most popular scripting

Detaylı

5İ Ortak Dersler. İNGİLİZCE II Okutman Aydan ERMİŞ

5İ Ortak Dersler. İNGİLİZCE II Okutman Aydan ERMİŞ Listmania Part 2 Ünite 12 5İ Ortak Dersler İNGİLİZCE II Okutman Aydan ERMİŞ 1 Ünite 12 LISTMANIA PART 2 Okutman Aydan ERMİŞ İçindekiler 12.1. PRESENT PERFECT & PAST SIMPLE... 4 12.1.1. Review of verb forms...

Detaylı

ÖNEMLİ PREPOSİTİONAL PHRASES

ÖNEMLİ PREPOSİTİONAL PHRASES ÖNEMLİ PREPOSİTİONAL PHRASES Bu liste YDS için Önemli özellikle seçilmiş prepositional phrase leri içerir. 74 adet Toplam 74 adet İngilizce Türkçe Tür 1. with the help -ın yardımıyla with the aid -ın yardımıyla

Detaylı

AİLE İRŞAT VE REHBERLİK BÜROLARINDA YAPILAN DİNİ DANIŞMANLIK - ÇORUM ÖRNEĞİ -

AİLE İRŞAT VE REHBERLİK BÜROLARINDA YAPILAN DİNİ DANIŞMANLIK - ÇORUM ÖRNEĞİ - T.C. Hitit Üniversitesi Sosyal Bilimler Enstitüsü Felsefe ve Din Bilimleri Anabilim Dalı AİLE İRŞAT VE REHBERLİK BÜROLARINDA YAPILAN DİNİ DANIŞMANLIK - ÇORUM ÖRNEĞİ - Necla YILMAZ Yüksek Lisans Tezi Çorum

Detaylı

BMH-303 Nesneye Yönelik Programlama

BMH-303 Nesneye Yönelik Programlama BMH-303 Nesneye Yönelik Programlama this anahtar kelimesi ve kalıtım Dr. Musa ATAŞ Siirt Üniversitesi Bilgisayar Mühendisliği this kelimesinin kullanım yerleri Aktif sınıfın örneğine referans vermek için

Detaylı

Hi-Res Audio/DNC Headset MDR-NC750

Hi-Res Audio/DNC Headset MDR-NC750 Kullanım kılavuzu Hi-Res Audio/DNC Headset MDR-NC750 İçindekiler Başlarken... 3 Giriş... 3 Genel bakış... 3 Temel konuları öğrenme...4 Mikrofonlu kulaklık setini takma... 4 Mikrofonlu kulaklık setinizi

Detaylı

Object-Oriented Oriented Design (OOD) Procedure Based Programlama. OOD Ana Ozellikleri

Object-Oriented Oriented Design (OOD) Procedure Based Programlama. OOD Ana Ozellikleri Procedure Based Programlama Procedural Programming Subprograms, functions/procedures kullanilmak suretiyle programi kisimlara ayirmak. Programlama karmasikligi procedure lar icinde gizlenir Data karmasikligi

Detaylı

The statement. const Time noon( 12, 0, 0 );

The statement. const Time noon( 12, 0, 0 ); 1 - const (Constant) Objects and const Member Functions Some objects need to be modifiable and some do not. You may use keyword const to specify that an object is not modifiable and that any attempt to

Detaylı

KONTAKSĐ. Bitirme Ödevi. Metin Kaplan 040020377 Ferhat Karakoç 040000606. Bölüm : Bilgisayar Mühendisliği Anabilim Dalı: Bilgisayar Bilimleri

KONTAKSĐ. Bitirme Ödevi. Metin Kaplan 040020377 Ferhat Karakoç 040000606. Bölüm : Bilgisayar Mühendisliği Anabilim Dalı: Bilgisayar Bilimleri ĐSTANBUL TEKNĐK ÜNĐVERSĐTESĐ ELEKTRĐK-ELEKTRONĐK FAKÜLTESĐ KONTAKSĐ Bitirme Ödevi Metin Kaplan 040020377 Ferhat Karakoç 040000606 Bölüm : Bilgisayar Mühendisliği Anabilim Dalı: Bilgisayar Bilimleri Danışman

Detaylı

Sample IELTS Task 2 scoring band 6

Sample IELTS Task 2 scoring band 6 Merhaba, Aşağıda ortalama 6 seviyesinde bir öğrencinin IELTS Academic Writing Task 2 için yazdığı Essay i ve her paragraph ile ilgili yorumları bulacaksınız. IELTS WRITING TASK 2 You should spend about

Detaylı

If you have any issue in outlook mail account like spam mail, mail send or receive issues, mail delivery problem, mail sending too late and.

If you have any issue in outlook mail account like spam mail, mail send or receive issues, mail delivery problem, mail sending too late and. Sign in oturum aç If you have any issue in outlook mail account like spam mail, mail send or receive issues, mail delivery problem, mail sending too late Sign in others oturum problem aç then call our

Detaylı