Yazılım Ürünü, yazılım tasarımı, modelleme nedir?
Tasarım kalıpları nedir, tarihçesi,
Yazılım Kalitesi, Kötü Tasarım Belirtileri
Yazılım Tasarım prensipleri,
Kohezyon (Cohesion), Ayrıştırma (Decomposition), Fonksiyonel Ayrıştırma, Zayıf Bağlaşım Prensibi (Low Coupling Principle),
Single REsponsibility Principle
This presentation introduces some advanced concepts of generics in Java. These slides introduce the following concepts:
- Generic classes and methods
- Type variable bounds
- Type erasure process
- Generics and inheritance
- Wildcard types
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
the program in the below link
https://drive.google.com/open?id=0B4tMuSViaMcVLUxqVV9HY3ZDZkU
the name of progam that use in the slide with a hint in the up-right of the slide
static keyword
oop
Design patterns are optimized, reusable solutions to the programming problems that we encounter every day. A design pattern is not a class or a library that we can simply plug into our system; it's much more than that. It is a template that has to be implemented in the correct situation. It's not language-specific either. A good design pattern should be implementable in most—if not all—languages, depending on the capabilities of the language. Most importantly, any design pattern can be a double-edged sword— if implemented in the wrong place, it can be disastrous and create many problems for you. However, implemented in the right place, at the right time, it can be your savior.
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use casesJordi Cabot
Slides for the mdse-book.com chapter 3: MDSE Use cases
Complete set of slides now available:
Chapter 1 - http://www.slideshare.net/mbrambil/modeldriven-software-engineering-in-practice-chapter-1-introduction
Chapter 2 - http://www.slideshare.net/mbrambil/modeldriven-software-engineering-in-practice-chapter-2-mdse-principles
Chapter 3 - http://www.slideshare.net/jcabot/model-driven-software-engineering-in-practice-chapter-3-mdse-use-cases
Chapter 4 - http://www.slideshare.net/jcabot/modeldriven-software-engineering-in-practice-chapter-4
Chapter 5 - https://www.slideshare.net/mbrambil/modeldriven-software-engineering-in-practice-chapter-5-integration-of-modeldriven-in-development-processes
Chapter 6 - http://www.slideshare.net/jcabot/mdse-bookslideschapter6
Chapter 7 - http://www.slideshare.net/mbrambil/model-driven-software-engineering-in-practice-book-chapter-7-developing-your-own-modeling-language
Chapter 8 - http://www.slideshare.net/jcabot/modeldriven-software-engineering-in-practice-chapter-8-modeltomodel-transformations
Chapter 9 - https://www.slideshare.net/mbrambil/model-driven-software-engineering-in-practice-book-chapter-9-model-to-text-transformations-and-code-generation
Chapter 10 - http://www.slideshare.net/jcabot/mdse-bookslideschapter10managingmodels
This book discusses how approaches based on modeling can improve the daily practice of software professionals. This is known as Model-Driven Software Engineering (MDSE) or, simply, Model-Driven Engineering (MDE).
MDSE practices have proved to increase efficiency and effectiveness in software development. MDSE adoption in the software industry is foreseen to grow exponentially in the near future, e.g., due to the convergence of software development and business analysis.
This book is an agile and flexible tool to introduce you to the MDE and MDSE world, thus allowing you to quickly understand its basic principles and techniques and to choose the right set of MDE instruments for your needs so that you can start to benefit from MDE right away.
The first part discusses the foundations of MDSE in terms of basic concepts (i.e., models and transformations), driving principles, application scenarios and current standards, like the wellknown MDA initiative proposed by OMG (Object Management Group) as well as the practices on how to integrate MDE in existing development processes.
The second part deals with the technical aspects of MDSE, spanning from the basics on when and how to build a domain-specific modeling language, to the description of Model-to-Text and Model-to-Model transformations, and the tools that support the management of MDE projects.
The book covers introductory and technical topics, spanning definitions and orientation in the MD* world, metamodeling, domain specific languages, model transformations, reverse engineering, OMG's MDA, UML, OCL, ATL, QVT, MOF, Eclipse, EMF, GMF, TCS, xText.
http://www.mdse-book.com
Software Architecture: views and viewpointsHenry Muccini
This is an introductory lecture to Software Architecture Views and Viewpoints, part of the Advanced Software Engineering course, at the University of L'Aquila, Italy (www.di.univaq.it/muccini/SE+/2012)
An Introduction to Domain Driven Design focusing on the concepts of Bounded Context, Strategic & Tactical Design, CQRS, Ubiquitous Language, Hexagonal Architecture, Event Sourcing, Task - based UIs
Yazılım Ürünü, yazılım tasarımı, modelleme nedir?
Tasarım kalıpları nedir, tarihçesi,
Yazılım Kalitesi, Kötü Tasarım Belirtileri
Yazılım Tasarım prensipleri,
Kohezyon (Cohesion), Ayrıştırma (Decomposition), Fonksiyonel Ayrıştırma, Zayıf Bağlaşım Prensibi (Low Coupling Principle),
Single REsponsibility Principle
This presentation introduces some advanced concepts of generics in Java. These slides introduce the following concepts:
- Generic classes and methods
- Type variable bounds
- Type erasure process
- Generics and inheritance
- Wildcard types
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
the program in the below link
https://drive.google.com/open?id=0B4tMuSViaMcVLUxqVV9HY3ZDZkU
the name of progam that use in the slide with a hint in the up-right of the slide
static keyword
oop
Design patterns are optimized, reusable solutions to the programming problems that we encounter every day. A design pattern is not a class or a library that we can simply plug into our system; it's much more than that. It is a template that has to be implemented in the correct situation. It's not language-specific either. A good design pattern should be implementable in most—if not all—languages, depending on the capabilities of the language. Most importantly, any design pattern can be a double-edged sword— if implemented in the wrong place, it can be disastrous and create many problems for you. However, implemented in the right place, at the right time, it can be your savior.
Model-driven Software Engineering in practice: Chapter 3 - MDSE Use casesJordi Cabot
Slides for the mdse-book.com chapter 3: MDSE Use cases
Complete set of slides now available:
Chapter 1 - http://www.slideshare.net/mbrambil/modeldriven-software-engineering-in-practice-chapter-1-introduction
Chapter 2 - http://www.slideshare.net/mbrambil/modeldriven-software-engineering-in-practice-chapter-2-mdse-principles
Chapter 3 - http://www.slideshare.net/jcabot/model-driven-software-engineering-in-practice-chapter-3-mdse-use-cases
Chapter 4 - http://www.slideshare.net/jcabot/modeldriven-software-engineering-in-practice-chapter-4
Chapter 5 - https://www.slideshare.net/mbrambil/modeldriven-software-engineering-in-practice-chapter-5-integration-of-modeldriven-in-development-processes
Chapter 6 - http://www.slideshare.net/jcabot/mdse-bookslideschapter6
Chapter 7 - http://www.slideshare.net/mbrambil/model-driven-software-engineering-in-practice-book-chapter-7-developing-your-own-modeling-language
Chapter 8 - http://www.slideshare.net/jcabot/modeldriven-software-engineering-in-practice-chapter-8-modeltomodel-transformations
Chapter 9 - https://www.slideshare.net/mbrambil/model-driven-software-engineering-in-practice-book-chapter-9-model-to-text-transformations-and-code-generation
Chapter 10 - http://www.slideshare.net/jcabot/mdse-bookslideschapter10managingmodels
This book discusses how approaches based on modeling can improve the daily practice of software professionals. This is known as Model-Driven Software Engineering (MDSE) or, simply, Model-Driven Engineering (MDE).
MDSE practices have proved to increase efficiency and effectiveness in software development. MDSE adoption in the software industry is foreseen to grow exponentially in the near future, e.g., due to the convergence of software development and business analysis.
This book is an agile and flexible tool to introduce you to the MDE and MDSE world, thus allowing you to quickly understand its basic principles and techniques and to choose the right set of MDE instruments for your needs so that you can start to benefit from MDE right away.
The first part discusses the foundations of MDSE in terms of basic concepts (i.e., models and transformations), driving principles, application scenarios and current standards, like the wellknown MDA initiative proposed by OMG (Object Management Group) as well as the practices on how to integrate MDE in existing development processes.
The second part deals with the technical aspects of MDSE, spanning from the basics on when and how to build a domain-specific modeling language, to the description of Model-to-Text and Model-to-Model transformations, and the tools that support the management of MDE projects.
The book covers introductory and technical topics, spanning definitions and orientation in the MD* world, metamodeling, domain specific languages, model transformations, reverse engineering, OMG's MDA, UML, OCL, ATL, QVT, MOF, Eclipse, EMF, GMF, TCS, xText.
http://www.mdse-book.com
Software Architecture: views and viewpointsHenry Muccini
This is an introductory lecture to Software Architecture Views and Viewpoints, part of the Advanced Software Engineering course, at the University of L'Aquila, Italy (www.di.univaq.it/muccini/SE+/2012)
An Introduction to Domain Driven Design focusing on the concepts of Bounded Context, Strategic & Tactical Design, CQRS, Ubiquitous Language, Hexagonal Architecture, Event Sourcing, Task - based UIs
Effective Java - Madde 1: Yapılandırıcılar yerine statik fabrika(factory) met...İbrahim Kürce
Normal şekilde, sınıfı kullanan kişi, o sınıftan bir örnek oluşturabilme iznini public(herkese açık) yapılandırıcı sayesinde elde eder. Her programcının bilmesi gereken başka bir teknik daha vardır. Bir sınıf, kendi örneğini döndüren statik fabrika metodu ile de örneğini oluşturabilir. Boolean(basit boolean tipinin kutulanmış sınıf hali) sınıfından basit bir örnek.
Mobilya ve ev eşyalarının derin öğrenme ile 128 kategoride sınııflandırılması...
BilgeAdam Nesne Yönelimli Programlama
1. C# ile Nesne Yönelimli Programlama
Object Oriented Programming
Sinan BOZKUŞ
sinan.bozkus@bilgeadam.com
2. - Nesne ve Sınıflardan oluşur.
- İlişkili parçalardan meydana gelir.
- Esnek ve genişletilebilir bir yapı sağlar.
- Tekrar kullanılabilirdir, kod tekrarını önler.
- Yönetimi ve bakımı kolaydır, kodlar düzen içerisindedir.
- Ekip halinde çalışmalar için avantaj sağlar.
- Günümüzde bir çok popüler dil tarafından kullanılır. (C#, Java, Php, Phyton…)
- SOLID İlkeleri
Nesne Yönelimli Programlama
3. - İçerisinde metotlar ve alanlar barındırabilirler.
- Yapıcı ve Yıkıcı Metotları vardır.
- Sınıflar aynı zamanda birer nesnedir.
- Erişim belirleyiciler (Access Modifiers) ile
istenilen düzeyde erişim sağlanabilir.
- Sınıflar içerisinde tanımlanan değişkenlere field
(alan) adı verilir. Her bir alan nesnenin bir
özelliğidir (property)
Class (Sınıf)
4. - “New” anahtar sözcüğü ile kullanılır.
- Bir nesneden (class) istenilen sayıda türetilebilir.
- Türetme işlemi yapılırken yapıcı metoda parametre
gönderilebilir.
Instance (Türetmek)
5. Method (Metot)
- Değer döndüren ve döndürmeyen olmak üzere ikiye
ayrılırlar.
- Metot tanımlamak için sırasıyla erişim belirleyici, dönüş
tipi, metot adı ve aldığı parametler yazılacak şekilde
tanımlanır.
- Metot geriye bir değer döndürmüyorsa dönüş tipi olarak
“void” anahtar sözcüğü, değer döndürüyorsa ilgili tip
yazılır.
- Değer döndürme işlemi metot içerisinde kullanılan
“return” anahtar sözcüğü ile yapılır.
- Metotlar istenilen sayıda ve tipte parameter alabilir. Her bir
parametre virgül ile ayrılarak yazılır.
- Aynı isimde birden fazla overload (aşırı yükleme) metot
tanımlanabilir.
6. Access Modifiers (Erişim Belirleyiciler)
Özel bir durum olmadıkça
varsayılan olarak değişkenler
ve metotlar private,
classlar ise internal dır.
7. Constructor (Yapıcı Metot)
- Sanal bellek (RAM) üzerinde nesneyi türeten metottur.
- Sınıf ile aynı isimde tanımlanır.
- Metot olmasına rağmen geriye dönüş tipi olmayan tek
metottur.
- Eğer bir yapıcı metot tanımlanırsa varsayılan yapıcı metot
iptal olur, tanımlanan varsayılan olur.
- Overload yapılabilir, yani birden fazla tanımlanabilir.
- Nesne üretilirken sınıfla ilgili yapılmasını istediğimiz bir
işlem varsa veya sınıfa parameter göndermemiz
gerekiyorsa yapıcı metotları kullanabiliriz.
- Tanımlanmazsa varsayılan olarak parameter almayan
default constructor geçerlidir.
8. Encapsulation (Kapsülleme)
- Nesne tabanlı programlamanın temel ilkelerinden bir
tanesidir.
- Kapsülleme ile veriye dışarıdan direkt erişimi
engelleyebiliriz. (private)
- Başka kod veya sınıflar tarafından doğrudan
kullanılmaması için bariyer görevi görür. Bu sayede
nesneler bilinçsiz kullanımdan korunabilir.
- Veri değeri atanırken (set) veya çağırılırken (get)
istediğimiz iş kurallarını uygulayabiliriz.
9. Inheritance (Miras/Kalıtım)
- Bir sınıf üzerindeki özelliklerin bir diğer
sınıfa aktarılmasına yarar.
- Temel sınıftaki özellikler istenen sayıdaki
sınıflara katılım yoluyla dağıtılabilir.
- Ortak özellikler tek yerde toplanarak kod
tekrarı yapılmasına engel olur.
- Bir sınıftan miras alınırken gerekirse yapıcı
metotuna parameter göndererek sınıflar
arasında veri taşıyabiliriz.
10. Polymorphism (Çok Biçimlilik)
- Ana sınıftan başka bir sınıf türetildiğinde, türeyen sınıfın
ana sınıf içindeki üyeleri kendine göre farklı olarak
uygulamasıdır
- Ana sınıf, kendi içindeki bir üyenin (method, değişken,
event vs.)-, kendinden türeyen başka sınıflar tarafından
değiştirilebilmesini istiyorsa virtual anahtar kelimesi ile
tanımlanmalıdır.
- Türeyen sınıf, gerektiğinde ana sınıf içindeki üyeyi
değiştirmek istiyorsa override olarak yeniden
tanımlayabilir. (Örnek: Class ToString())
11. - Sınıflara (class) benzer yapıda olup daha basit
ve daha performanslıdır.
- Ram üzerinde daha az yer kaplar.
- Miras/katılım almaz, struct ile çok biçimlilik
(Polymorphism) kullanılamaz.
- Parametresiz yapıcı metot tanımlamazsınız.
- Sınıflardan eski bir geçmişe sahiptir, sınıflar bu
yapının üzerine geliştirilerek kurulmuşlardır.
- Örneğin Int struct, String ise sınıftır.
Struct
12. - Uygulama içerisinde sabit olan ve uygulama
boyunca hiç değişmeyen seçenekleri
tanımlamak için kullanılır.
- Kod yazarken seçeneklerin anlaşılır olmasını
sağlar.
Enum (=> Enumeration)
13. - Ram üzerinde bir kez tanımlanır, herkes için aynıdır.
- Türetme işlemi yapılmadan ulaşılan elemanlardır.
- Bir kez tanımlandığı için ram üzerinde az yer kaplar
ve performanslıdır.
- Herkes için aynı olduğundan web tabanlı yapılarda
kullanıcı değerleri gibi verilerin taşınması amaçlı
kullanılamaz.
- Metotlarda parametreye this anahtar kelimesi
verilerek extension method oluşturulabilir.
- Statik metotlara en güzel örnek
MessageBox.Show() dur.
Static (Statik)
14. - Abstract Sınıf, ortak özellikli Sınıflara Base(taban) Sınıf olma
görevini üstlenir
- Standart kalıtım gibi bir diğer sınıfın özelliklerini alırken aynı
zamanda da sınıf içerisinde oluşturulması gereken zorunlu
tanımlamaları (şablon) alır.
- Abstract sınıflar türetilemezler.
- Abstract method, sadece Abstract Class’ların içerisinde
tanımlanır ve Abstract Class’ı kalıtan sınıf tarafından override
edilmek zorundadır.
- Oluşturduğumuz Abstract Class içerisine, Abstract Method
yazılırken gövdesi yazılmaz ve daha sonra Abstract Class’ımızı
kalıtacağımız sınıfta Abstract Method’u override ederiz.
Abstract (Soyut)
15. - Diğer sınıflara rehberlik eden bir sınıftır.
- İşi diğer sınıflara rehberlik etmek olduğundan
sadece metot şablonları tanımlanır.
- Metot içerikleri Interface içerisinde yer almaz.
- Bir interface istenilen sayıda sınıf ile kullanılabilir.
- Interface kullanan sınıflar türetilirken interface
tipinde türetilebilir, bu sayede esnek yapılar
oluşturulabilir.
Interface (Arayüz/Şablon)