Certainly! Below is the Ultimate Object-Oriented Programming (OOP) Cheat Sheet for Java. This table includes key OOP concepts tailored specifically for Java, complete with definitions, Java code examples, remarks, and key points to help you remember essential aspects of each concept.
Concept |
Definition |
Example |
Remarks |
Key Points |
Class |
A blueprint for creating objects, defining attributes and methods. |
java public class Car { private String make; private String model; public Car(String make, String model) { this.make = make; this.model = model; } public void drive() { System.out.println("Driving"); } } |
Defines the structure and behavior of objects. Think of it as a template. |
- Use CamelCase
for class names. |
Object |
An instance of a class containing actual data. |
java Car myCar = new Car("Toyota", "Corolla"); myCar.drive(); // Output: Driving |
Represents a specific entity with state and behavior. |
- Created using the new keyword. |
Inheritance |
Mechanism where a new class inherits attributes and methods from an existing class. |
java public class ElectricCar extends Car { private int batterySize; public ElectricCar(String make, String model, int batterySize) { super(make, model); this.batterySize = batterySize; } } |
Promotes code reuse and hierarchical relationships. Use super() to access parent class. |
- Java supports single
inheritance. |
Encapsulation |
Bundling data and methods within a class and restricting direct access to some components. |
java public class Account { private double balance; public void deposit(double amount) { balance += amount; } public double getBalance() { return balance; } } |
Use private attributes to hide internal state. Access via public methods. |
- Enhances maintainability and
security. |
Polymorphism |
Ability to process objects differently based on their class or data type. |
java public class Animal { public void speak() { } } public class Dog extends Animal { @Override public void speak() { System.out.println("Woof"); } } public class Cat extends Animal { @Override public void speak() { System.out.println("Meow"); } } public class Test { public static void main(String[] args) { Animal[] animals = { new Dog(), new Cat() }; for (Animal animal : animals) { animal.speak(); // Outputs: Woof Meow } } } |
Enables methods to be used interchangeably. Facilitates flexibility and integration of different classes. |
- Achieved via method
overriding and interfaces. |
Abstraction |
Hiding complex implementation details and showing only the essential features. |
java public abstract class Shape { public abstract double area(); } public class Rectangle extends Shape { private double width, height; public Rectangle(double width, double height) { this.width = width; this.height = height; } @Override public double area() { return width * height; } } |
Use abstract classes and interfaces to define contracts. Prevents instantiation of incomplete classes. |
- Abstract classes can have both
abstract and concrete methods. |
Interface |
A contract that defines methods without implementing them, ensuring certain methods are present. |
java public interface Flyable { void fly(); } public class Bird implements Flyable { @Override public void fly() { System.out.println("Bird flying"); } } |
Ensures that different classes implement the same methods, promoting consistency. |
- Java 8+ allows
default and static methods in interfaces. |
Composition |
Building complex objects by combining simpler ones, establishing a "has-a" relationship. |
java public class Engine { public void start() { ystem.out.println("Engine started"); } } public class Car { private Engine engine = new Engine(); public void startCar() { engine.start(); } } |
Favors composition over inheritance for greater flexibility. |
- Composition allows for dynamic
relationships. |
Aggregation |
A specialized form of composition with a weaker relationship; objects can exist independently. |
java public class Department { private String name; public Department(String name) { this.name = name; } } public class University { private List<Department> departments = new ArrayList<>(); public void addDepartment(Department dept) { departments.add(dept); } } |
Departments can exist without the university. |
- Represents a
"whole-part" relationship without ownership. |
Method Overloading |
Defining multiple methods with the same name but different parameters within the same class. |
java public class MathUtils { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } |
Allows methods to perform different tasks based on parameters. |
- Resolved at compile time. |
Method Overriding |
Redefining a method in a subclass that already exists in the parent class. |
java @Override public void speak() { System.out.println("Woof"); } |
Allows a subclass to provide a specific implementation. Use super.methodName() to call the parent method if needed. |
- Ensures runtime
polymorphism. |
Constructor |
A special method used to initialize objects of a class. |
java public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } } |
In Java, constructors have the same name as the class and no return type. |
- Can be overloaded. |
Destructor |
A method called when an object is about to be destroyed to perform cleanup tasks. |
Java does not have destructors like C++; instead, it has the finalize() method, which is deprecated and not recommended for use. |
Rely on garbage collection. Use try-with-resources or explicit cleanup methods for resource management. |
- Prefer explicit
resource management (e.g., try-with-resources for AutoCloseable objects). |
Access Modifiers |
Keywords that set the accessibility of classes, methods, and attributes. |
java public class Example { public String publicVar; protected String protectedVar; private String privateVar; } |
public: accessible everywhere. |
- Default (no modifier) is package-private. |
Static Members |
Attributes or methods belonging to the class rather than any instance. |
java public class MathUtils { public static final double PI = 3.14159; public static int add(int a, int b) { return a + b; } } // Usage int result = MathUtils.add(5, 3); // Output: 8 double pi = MathUtils.PI; // 3.14159 |
Accessed using the class name without creating an instance. Useful for utility functions and constants. |
- static methods
cannot access instance variables directly. |
Abstract Class |
A class that cannot be instantiated and may contain abstract methods that must be implemented by subclasses. |
java public abstract class Vehicle { public abstract void move(); } public class Bicycle extends Vehicle { @Override public void move() { System.out.println("Pedaling"); } } |
Serves as a base for other classes. Can have both abstract and concrete methods. |
- Use when classes share a
common base but have different implementations. |
Multiple Inheritance |
A class can inherit from more than one base class, combining their features. |
Java does not support multiple inheritance with classes, but allows multiple interface implementations. |
Avoids the Diamond
Problem. |
- Use interfaces
to implement multiple behaviors. |
Composition vs Inheritance |
Choosing between "has-a" (composition) and "is-a" (inheritance) relationships based on use case. |
Inheritance for "is-a" (e.g., Dog is an Animal). Composition for "has-a" (e.g., Car has an Engine). |
Promotes flexibility and reduces tight coupling when using composition. |
- Inheritance: Use for
hierarchical relationships. |
SOLID Principles |
Five design principles to make software designs more understandable, flexible, and maintainable. |
Single Responsibility |
Follow SOLID principles to improve code quality and maintainability. |
- Single
Responsibility: A class should have only one reason to change. |
Design Patterns |
Reusable solutions to common software design problems. |
Singleton: Ensures a class has only one
instance. |
Familiarity with design patterns can greatly enhance problem-solving skills in OOP. |
- Understand when and how to
apply patterns. |
UML Diagrams |
Visual representations of classes and their relationships in OOP. |
Example UML class diagram: |
Useful for planning
and documenting software architecture. |
- Helps in visualizing
system structure and interactions. |
Duck Typing |
An object's suitability is determined by the presence of certain methods and properties, not the actual type. |
Java is statically typed and does not support duck typing directly. Instead, Java uses interfaces to achieve similar behavior. |
Promotes flexibility and reusability through interface-based design. |
- Use interfaces to
define capabilities regardless of actual class. |
Mixin |
A class that provides methods to other classes without being a parent class. |
Java does not have mixins, but similar behavior can be achieved using interfaces with default methods. |
Use interfaces with default methods for mixin-like functionality. |
- Allows adding
functionality to classes without using inheritance. |
Encapsulation Techniques |
Methods to protect the internal state of an object. |
java public class Account { private double balance; public void deposit(double amount) { balance += amount; } public double getBalance() { return balance; } } |
Use private or protected
attributes. |
- Ensures controlled access and
modification of object data. |
Association |
A relationship where one class uses or interacts with another. |
java public class Teacher { private String name; public Teacher(String name) { this.name = name; } } public class Student { private String name; private Teacher teacher; public Student(String name, Teacher teacher) { this.name = name; this.teacher = teacher; } } |
Represents a "uses-a" relationship. Both classes can exist independently. |
- Can be one-to-one,
one-to-many, or many-to-many. |
Dependency Injection |
A design pattern where an object receives other objects it depends on, rather than creating them internally. |
java public class Database { public void connect() { System.out.println("Database connected"); } } public class Repository { private Database db; public Repository(Database db) { this.db = db; } public String getData() { db.connect(); return "Data"; } } |
Enhances modularity and makes testing easier by decoupling dependencies. |
- Use frameworks like Spring
for advanced DI. |
Late Binding |
Method calls are resolved at runtime rather than compile-time. |
java public class Base { public void action() { System.out.println("Base action"); } } public class Derived extends Base { @Override public void action() { System.out.println("Derived action"); } } public class Test { public static void main(String[] args) { Base obj = new Derived(); obj.action(); // Output: Derived action } } |
Enables polymorphism. The method that gets executed depends on the object's actual type at runtime. |
- Core to runtime
polymorphism. |
Method Chaining |
Calling multiple methods on the same object in a single statement. |
java public class Builder { private String value = ""; public Builder add(String text) { value += text; return this; } public String build() { return value; } } // Usage Builder builder = new Builder(); String result = builder.add("Hello ").add("World").build(); // "Hello World" |
Improves readability and allows fluent interfaces. Return this in methods to enable chaining. |
- Common in builder patterns
and fluent APIs. |
Exception Handling in OOP |
Managing errors and exceptions within class methods to ensure robustness. |
java public class Calculator { public double divide(double a, double b) { try { return a / b; } catch (ArithmeticException e) { System.out.println("Cannot divide by zero"); return 0; } } } |
Incorporate exception handling within methods to manage unexpected scenarios gracefully. |
- Use specific
exceptions for clarity. |
Immutable Objects |
Objects whose state cannot be modified after creation. |
java public final class Point { private final int x; private final int y; public Point(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public int getY() { return y; } } |
Use the final keyword to prevent modification. Provide no setters. |
- Thread-safe and easier
to reason about. |
Mixins vs Interfaces vs Abstract Classes |
Different ways to achieve code reuse and define contracts. |
- Mixin: Not
directly supported in Java. Use interfaces with default methods. |
Understanding the differences helps in designing flexible and maintainable systems. |
- Mixins: Use
interfaces with default methods for reusable methods. |
Additional Tips
- DRY Principle (Don't Repeat Yourself): Avoid code duplication by leveraging inheritance and composition.
- KISS Principle (Keep It Simple, Stupid): Strive for simplicity in design and implementation.
- YAGNI Principle (You Aren't Gonna Need It): Implement features only when necessary to avoid overcomplicating the design.
- UML Tools: Utilize tools like Lucidchart, draw.io, or PlantUML for creating UML diagrams.
- Language Specifics: Be aware of Java-specific implementations of OOP concepts, such as single inheritance, interface usage, and access modifiers.
Common Java OOP Features
- Access Modifiers: Control the visibility of classes, methods, and variables (public, protected, private, and default/package-private).
- Final Keyword: Prevents inheritance (final classes), method overriding (final methods), and variable reassignment (final variables).
- Static Keyword: Defines class-level variables and methods that belong to the class rather than any instance.
- Interfaces vs Abstract Classes: Use interfaces for defining contracts and multiple behaviors; use abstract classes for shared base functionality with some implementation.
- Annotations: Utilize annotations like @Override, @Deprecated, and custom annotations to provide metadata and influence behavior.
Common Java OOP Libraries and Frameworks
- Spring Framework: Offers comprehensive support for dependency injection, aspect-oriented programming, and more.
- Hibernate: Provides object-relational mapping (ORM) for managing relational data in Java applications.
- Apache Commons: A collection of reusable Java components and utilities.
- JUnit: Facilitates unit testing for Java applications.
- Lombok: Reduces boilerplate code by generating getters, setters, constructors, and more through annotations.
Best Practices
- Encapsulate Fields: Always keep class fields private and provide public getter and setter methods if necessary.
- Favor Composition Over Inheritance: Prefer assembling classes from smaller, reusable components rather than relying heavily on inheritance.
- Use Interfaces for Abstraction: Define behaviors using interfaces to allow multiple implementations and enhance flexibility.
- Adhere to SOLID Principles: Follow SOLID principles to create maintainable and scalable software designs.
- Leverage Design Patterns: Utilize appropriate design patterns to solve common design problems effectively.
- Write Clean and Readable Code: Follow Java naming conventions, use meaningful variable and method names, and document your code for clarity.
Sample Project Structure in Java
plaintext
src/
āāā main/
ā āāā java/
ā ā āāā com/
ā ā āāā example/
ā ā āāā models/
ā ā ā āāā Car.java
ā ā āāā services/
ā ā ā āāā CarService.java
ā ā āāā App.java
ā āāā resources/
ā āāā application.properties
āāā test/
āāā java/
āāā com/
āāā example/
āāā AppTest.java
ąŖą«ąŖ¬ ąŖøąŖ¾ąŖ°ą«ąŖ! ąŖ ąŖ¹ą«ąŖ Java ąŖ®ąŖ¾ąŖą«ąŖØą«ąŖ ąŖąŖ¬ą«ąŖą«ąŖą«ąŖ-ąŖąŖ°ąŖæąŖąŖØą«ąŖą«ąŖ” ąŖŖą«ąŖ°ą«ąŖą«ąŖ°ąŖ¾ąŖ®ąŖæąŖąŖ (OOP) ąŖą«ąŖ ąŖ¶ą«ąŖ ąŖą«ąŖ°ą«ąŖąŖ°ąŖ¾ąŖ¤ą«ąŖ®ąŖ¾ąŖ ąŖąŖŖąŖµąŖ¾ąŖ®ąŖ¾ąŖ ąŖąŖµą«ąŖÆą«ąŖ ąŖą«. ąŖ ąŖą«ąŖ¬ąŖ²ąŖ®ąŖ¾ąŖ ąŖ®ą«ąŖą«ąŖÆ OOP ąŖ§ąŖ¾ąŖ°ąŖ£ąŖ¾ąŖ, ąŖµą«ąŖÆąŖ¾ąŖą«ąŖÆąŖ¾ąŖ, Java ąŖą«ąŖ” ąŖąŖ¦ąŖ¾ąŖ¹ąŖ°ąŖ£ą«, ąŖąŖæąŖŖą«ąŖŖąŖ£ą«ąŖ ąŖ ąŖØą« ąŖ®ą«ąŖą«ąŖÆ ąŖ®ą«ąŖ¦ą«ąŖ¦ąŖ¾ąŖ ąŖøąŖ®ąŖ¾ąŖµąŖæąŖ·ą«ąŖ ąŖą« ąŖą« ąŖ¤ąŖ®ąŖØą« ąŖ¦ąŖ°ą«ąŖ ąŖ§ąŖ¾ąŖ°ąŖ£ąŖ¾ ąŖøąŖ®ąŖąŖµąŖ¾ąŖ®ąŖ¾ąŖ ąŖ ąŖØą« ąŖÆąŖ¾ąŖ¦ ąŖ°ąŖ¾ąŖąŖµąŖ¾ąŖ®ąŖ¾ąŖ ąŖ®ąŖ¦ąŖ¦ ąŖąŖ°ąŖ¶ą«.
ąŖ§ąŖ¾ąŖ°ąŖ£ąŖ¾ |
ąŖµą«ąŖÆąŖ¾ąŖą«ąŖÆąŖ¾ |
ąŖąŖ¦ąŖ¾ąŖ¹ąŖ°ąŖ£ |
ąŖąŖæąŖŖą«ąŖŖąŖ£ą«ąŖ |
ąŖ®ą«ąŖą«ąŖÆ ąŖ®ą«ąŖ¦ą«ąŖ¦ąŖ¾ąŖ |
ąŖą«ąŖ²ąŖ¾ąŖø (Class) |
ąŖąŖ¬ą«ąŖą«ąŖą«ąŖą«ąŖø ąŖ¬ąŖØąŖ¾ąŖµąŖµąŖ¾ ąŖ®ąŖ¾ąŖą«ąŖØą«ąŖ ąŖ¬ą«ąŖ²ą«ąŖŖą«ąŖ°ąŖæąŖØą«ąŖ, ąŖą« ąŖą«ąŖ£ąŖ§ąŖ°ą«ąŖ®ą« ąŖ ąŖØą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖµą«ąŖÆąŖ¾ąŖą«ąŖÆąŖ¾ ąŖąŖ°ą« ąŖą«ą„¤ |
java public class Car { private String make; private String model; public Car(String make, String model) { this.make = make; this.model = model; } public void drive() { System.out.println("Driving"); } } |
ąŖąŖ¬ą«ąŖą«ąŖą«ąŖą«ąŖøąŖØą« ąŖ°ąŖąŖØąŖ¾ ąŖ ąŖØą« ąŖµąŖ°ą«ąŖ¤ąŖØ ąŖØąŖæąŖ°ą«ąŖ§ąŖ¾ąŖ°ąŖæąŖ¤ ąŖąŖ°ą« ąŖą«ą„¤ ąŖ¤ą«ąŖØą« ąŖą«ąŖ®ą«ąŖŖąŖ²ą«ąŖ ąŖ¤ąŖ°ą«ąŖą« ąŖµąŖæąŖąŖ¾ąŖ°ą«ą„¤ |
- CamelCase ąŖØą«
ąŖąŖŖąŖÆą«ąŖ ąŖą«ąŖ²ąŖ¾ąŖø ąŖØąŖ¾ąŖ® ąŖ®ąŖ¾ąŖą« ąŖąŖ°ą«ą„¤ |
ąŖąŖ¬ą«ąŖą«ąŖą«ąŖ (Object) |
ąŖą«ąŖ²ąŖ¾ąŖøąŖØą«ąŖ ąŖąŖ ąŖØąŖæąŖ®ąŖ£ą«ąŖ, ąŖą«ąŖ®ąŖ¾ąŖ ąŖµąŖ¾ąŖøą«ąŖ¤ąŖµąŖæąŖ ąŖ”ą«ąŖąŖ¾ ąŖ¹ą«ąŖÆ ąŖą«ą„¤ |
java Car myCar = new Car("Toyota", "Corolla"); myCar.drive(); // ąŖąŖąŖąŖŖą«ąŖ: Driving |
ąŖøą«ąŖ„ąŖæąŖ¤ąŖæ ąŖ ąŖØą« ąŖµąŖ°ą«ąŖ¤ąŖØ ąŖøąŖ¾ąŖ„ą«ąŖØą«ąŖ ąŖØąŖæąŖ¶ą«ąŖąŖæąŖ¤ ąŖøąŖ¤ą«ąŖ¤ąŖ¾ąŖµąŖ¾ąŖ° ąŖŖą«ąŖ°ąŖ¤ąŖæąŖØąŖæąŖ§ąŖæąŖ¤ą«ąŖµą„¤ |
- new ąŖą«ąŖµąŖ°ą«ąŖ”ąŖØą«
ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖ¬ąŖØąŖ¾ąŖµąŖµąŖ¾ąŖ®ąŖ¾ąŖ ąŖąŖµą« ąŖą«ą„¤ |
ąŖąŖ¤ąŖ°ą«ąŖąŖ°ąŖ£ (Inheritance) |
ąŖąŖ ąŖØąŖµą« ąŖą«ąŖ²ąŖ¾ąŖø ąŖ ąŖąŖ¾ąŖąŖØą« ąŖą«ąŖ²ąŖ¾ąŖøąŖØąŖ¾ ąŖą«ąŖ£ąŖ§ąŖ°ą«ąŖ®ą« ąŖ ąŖØą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖµąŖ¾ąŖ°ąŖøąŖ¾ąŖąŖ¤ ąŖ²ą« ąŖą«ą„¤ |
java public class ElectricCar extends Car { private int batterySize; public ElectricCar(String make, String model, int batterySize) { super(make, model); this.batterySize = batterySize; } } |
ąŖą«ąŖ” ąŖŖą«ąŖØąŖąŖąŖŖąŖÆą«ąŖ ąŖ ąŖØą« ąŖ¹ąŖ¾ąŖÆąŖ°ąŖ¾ąŖ°ą«ąŖąŖæąŖąŖ² ąŖøąŖąŖ¬ąŖąŖ§ą«ąŖØą« ąŖŖą«ąŖ°ą«ąŖ¤ą«ąŖøąŖ¾ąŖ¹ąŖØ ąŖąŖŖą« ąŖą«ą„¤ ąŖŖą«ąŖ°ąŖØą«ąŖ ąŖą«ąŖ²ąŖ¾ąŖøąŖØą« ąŖąŖą«ąŖøą«ąŖø ąŖąŖ°ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą« super() ąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ |
- Java ąŖøąŖæąŖąŖąŖ²
ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø
ąŖøąŖ®ąŖ°ą«ąŖ„ąŖØ ąŖąŖŖą« ąŖą«ą„¤ |
ąŖąŖØą«ąŖą« ąŖŖą«ąŖøą«ąŖÆą«ąŖ²ą«ąŖ¶ąŖØ (Encapsulation) |
ąŖ”ą«ąŖąŖ¾ ąŖ ąŖØą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖąŖ ąŖą«ąŖ²ąŖ¾ąŖøąŖ®ąŖ¾ąŖ ąŖą«ąŖ”ą«ąŖØą« ąŖą«ąŖąŖ²ą«ąŖ ąŖąŖąŖą«ąŖØą« ąŖøą«ąŖ§ą« ąŖąŖą«ąŖøą«ąŖøąŖ„ą« ąŖ®ąŖ°ą«ąŖÆąŖ¾ąŖ¦ąŖæąŖ¤ ąŖąŖ°ąŖµą«ąŖą„¤ |
java public class Account { private double balance; public void deposit(double amount) { balance += amount; } public double getBalance() { return balance; } } |
ąŖąŖąŖ¤ąŖ°ąŖæąŖ ąŖ°ąŖ¾ąŖą«ąŖÆąŖØą« ąŖą«ąŖŖąŖ¾ąŖµąŖµąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖąŖ¾ąŖØąŖą« ąŖą«ąŖ£ąŖ§ąŖ°ą«ąŖ®ą«ąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ ąŖąŖ¾ąŖ¹ą«ąŖ° ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ¦ą«ąŖµąŖ¾ąŖ°ąŖ¾ ąŖąŖą«ąŖøą«ąŖø ąŖąŖ°ą«ą„¤ |
- ąŖąŖ¾ąŖ³ąŖµąŖ£ą«
ąŖ
ąŖØą« ąŖøą«ąŖ°ąŖą«ąŖ·ąŖ¾ąŖ®ąŖ¾ąŖ ąŖµąŖ§ąŖ¾ąŖ°ą« ąŖąŖ°ą« ąŖą«ą„¤ |
ąŖŖą«ąŖ²ąŖæąŖ®ą«ąŖ°ą«ąŖ«ąŖæąŖąŖ® (Polymorphism) |
ąŖµąŖøą«ąŖ¤ą«ąŖąŖØą« ąŖ¤ą«ąŖ®ąŖØąŖ¾ ąŖą«ąŖ²ąŖ¾ąŖø ąŖ ąŖ„ąŖµąŖ¾ ąŖ”ą«ąŖąŖ¾ ąŖŖą«ąŖ°ąŖąŖ¾ąŖ°ąŖØąŖ¾ ąŖąŖ§ąŖ¾ąŖ°ą« ąŖµąŖæąŖµąŖæąŖ§ ąŖ°ą«ąŖ¤ą« ąŖŖą«ąŖ°ą«ąŖøą«ąŖø ąŖąŖ°ąŖµąŖ¾ąŖØą« ąŖą«ąŖ·ąŖ®ąŖ¤ąŖ¾ą„¤ |
java public class Animal { public void speak() { } } public class Dog extends Animal { @Override public void speak() { System.out.println("Woof"); } } public class Cat extends Animal { @Override public void speak() { System.out.println("Meow"); } } public class Test { public static void main(String[] args) { Animal[] animals = { new Dog(), new Cat() }; for (Animal animal : animals) { animal.speak(); // ąŖąŖąŖąŖŖą«ąŖ: Woof Meow } } } |
ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖąŖŖąŖøą« ąŖ°ą«ąŖ¤ą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ąŖµąŖ¾ ąŖ¦ą« ąŖą«ą„¤ ąŖµąŖæąŖµąŖæąŖ§ ąŖą«ąŖ²ąŖ¾ąŖøąŖæąŖøąŖØą« ąŖøąŖ°ąŖ³ąŖ¤ąŖ¾ąŖ„ą« ąŖąŖØą«ąŖąŖæąŖą«ąŖ°ą«ąŖ ąŖąŖ°ą« ąŖą«ą„¤ |
- ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ
ąŖąŖµąŖ°ą«ąŖ”ą«ąŖ°ąŖ¾ąŖąŖ” ąŖ
ąŖØą« ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø ąŖ¦ą«ąŖµąŖ¾ąŖ°ąŖ¾ ąŖŖą«ąŖ°ąŖ¾ąŖŖą«ąŖ¤ ąŖ„ąŖ¾ąŖÆ ąŖą«ą„¤ |
ąŖąŖ¬ąŖøą«ąŖą«ąŖ°ąŖ¾ąŖą«ąŖ¶ąŖØ (Abstraction) |
ąŖąŖąŖæąŖ² ąŖ ąŖ®ąŖ² ąŖµąŖæąŖąŖ¤ą«ąŖ„ą« ąŖą«ąŖŖąŖ¾ąŖµąŖµą«ąŖ ąŖ ąŖØą« ąŖ®ąŖ¾ąŖ¤ą«ąŖ° ąŖąŖµąŖ¶ą«ąŖÆąŖ ąŖ«ą«ąŖąŖ°ą«ąŖø ąŖ¬ąŖ¤ąŖ¾ąŖµąŖµą«ą„¤ |
java public abstract class Shape { public abstract double area(); } public class Rectangle extends Shape { private double width, height; public Rectangle(double width, double height) { this.width = width; this.height = height; } @Override public double area() { return width * height; } } |
ąŖąŖ°ąŖ¾ąŖ° ąŖØąŖæąŖ°ą«ąŖ§ąŖ¾ąŖ°ąŖæąŖ¤ ąŖąŖ°ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖąŖ¬ąŖøą«ąŖą«ąŖ°ąŖ¾ąŖą«ąŖ ąŖą«ąŖ²ąŖ¾ąŖø ąŖ ąŖØą« ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ ąŖ ąŖŖą«ąŖ°ą«ąŖ£ ąŖą«ąŖ²ąŖ¾ąŖøąŖæąŖøąŖØąŖ¾ ąŖØąŖæąŖ°ą«ąŖ®ąŖ¾ąŖ£ąŖØą« ąŖ°ą«ąŖą« ąŖą«ą„¤ |
- ąŖąŖ¬ąŖøą«ąŖą«ąŖ°ąŖ¾ąŖą«ąŖ
ąŖą«ąŖ²ąŖ¾ąŖøą«ąŖ®ąŖ¾ąŖ ąŖąŖ¬ąŖøą«ąŖą«ąŖ°ąŖ¾ąŖą«ąŖ ąŖ
ąŖØą« ąŖą«ąŖąŖą«ąŖ°ą«ąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ¹ą«ąŖ ąŖ¶ąŖą« ąŖą«ą„¤ |
ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø (Interface) |
ąŖąŖ°ąŖ¾ąŖ° ąŖą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖµąŖæąŖØąŖ¾ ąŖ ąŖ®ąŖ² ąŖąŖ°ąŖµąŖ¾ąŖ®ąŖ¾ąŖ ąŖµą«ąŖÆąŖ¾ąŖą«ąŖÆąŖ¾ąŖÆąŖæąŖ¤ ąŖąŖ°ą« ąŖą«, ąŖąŖ¾ąŖ¤ąŖ°ą« ąŖąŖ°ą« ąŖą« ąŖą« ąŖą«ąŖąŖ²ą«ąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ¹ąŖ¾ąŖąŖ° ąŖą«ą„¤ |
java public interface Flyable { void fly(); } public class Bird implements Flyable { @Override public void fly() { System.out.println("Bird flying"); } } |
ąŖµąŖæąŖµąŖæąŖ§ ąŖą«ąŖ²ąŖ¾ąŖøąŖæąŖøąŖØą« ąŖøąŖ®ąŖ¾ąŖØ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ ąŖ®ąŖ² ąŖąŖ°ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖąŖ¾ąŖ¤ąŖ°ą« ąŖąŖ°ą« ąŖą«, ąŖą« ąŖøą«ąŖøąŖąŖąŖ¤ąŖ¤ąŖ¾ ąŖŖą«ąŖ°ą«ąŖ¤ą«ąŖøąŖ¾ąŖ¹ąŖØ ąŖąŖŖą« ąŖą«ą„¤ |
- Java 8+ ąŖ®ąŖ¾ąŖ
ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖøąŖ®ąŖ¾ąŖ ąŖ”ąŖæąŖ«ą«ąŖ²ą«ąŖ ąŖ
ąŖØą« ąŖøą«ąŖą«ąŖąŖæąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ¹ą«ąŖ ąŖ¶ąŖą« ąŖą«ą„¤ |
ąŖøąŖąŖÆą«ąŖąŖØ (Composition) |
ąŖøąŖ°ąŖ³ ąŖąŖ¬ą«ąŖą«ąŖą«ąŖą«ąŖøąŖØą« ąŖą«ąŖ”ą«ąŖØą« ąŖąŖąŖæąŖ² ąŖąŖ¬ą«ąŖą«ąŖą«ąŖą«ąŖø ąŖ¬ąŖØąŖ¾ąŖµąŖµą«, "ąŖ¹ąŖ¾ąŖø-ąŖ" ąŖøąŖąŖ¬ąŖąŖ§ ąŖøą«ąŖ„ąŖ¾ąŖŖąŖæąŖ¤ ąŖąŖ°ąŖµą«ą„¤ |
java public class Engine { public void start() { System.out.println("Engine started"); } } public class Car { private Engine engine = new Engine(); public void startCar() { engine.start(); } } |
ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖøąŖØą« ąŖ¤ą«ąŖ²ąŖØąŖ¾ąŖ®ąŖ¾ąŖ ąŖµąŖ§ą« ąŖ²ąŖµąŖą«ąŖąŖ¤ąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖøąŖąŖÆą«ąŖąŖØąŖØą« ąŖŖąŖøąŖąŖ¦ ąŖąŖ°ą«ą„¤ |
- ąŖøąŖąŖÆą«ąŖąŖØ
ąŖ”ąŖ¾ąŖÆąŖØąŖ¾ąŖ®ąŖæąŖ ąŖøąŖąŖ¬ąŖąŖ§ą« ąŖ®ąŖ¾ąŖą« ąŖ
ąŖØą«ąŖ®ąŖ¤ąŖæ ąŖąŖŖą« ąŖą«ą„¤ |
ąŖąŖøą«ąŖøąŖæąŖąŖ¶ąŖØ (Aggregation) |
ąŖøąŖąŖÆą«ąŖąŖØąŖØą« ąŖµąŖæąŖ¶ąŖæąŖ·ą«ąŖ ąŖ«ą«ąŖ°ą«ąŖ® ąŖą« ąŖØąŖ¬ąŖ³ą« ąŖøąŖąŖ¬ąŖąŖ§ą« ąŖ¹ą«ąŖÆ ąŖą«; ąŖąŖ¬ą«ąŖą«ąŖą«ąŖą«ąŖø ąŖøą«ąŖµąŖ¤ąŖąŖ¤ą«ąŖ° ąŖ°ą«ąŖ¤ą« ąŖ ąŖøą«ąŖ¤ąŖæąŖ¤ą«ąŖµąŖ®ąŖ¾ąŖ ąŖ°ąŖ¹ą« ąŖ¶ąŖą« ąŖą«ą„¤ |
java public class Department { private String name; public Department(String name) { this.name = name; } } public class University { private List<Department> departments = new ArrayList<>(); public void addDepartment(Department dept) { departments.add(dept); } } |
ąŖµąŖæąŖąŖ¾ąŖą« ąŖµąŖæąŖØąŖ¾ ąŖÆą«ąŖØąŖæąŖµąŖ°ą«ąŖøąŖæąŖą«ąŖØąŖ¾ ąŖ ąŖøą«ąŖ¤ąŖæąŖ¤ą«ąŖµąŖ®ąŖ¾ąŖ ąŖ°ąŖ¹ą« ąŖ¶ąŖą« ąŖą«ą„¤ |
-
"Whole-part" ąŖøąŖąŖ¬ąŖąŖ§ąŖØą« ownership ąŖµąŖæąŖØąŖ¾ ąŖ¦ąŖ°ą«ąŖ¶ąŖ¾ąŖµą« ąŖą«ą„¤ |
ąŖ®ą«ąŖ„ą«ąŖ” ąŖąŖµąŖ°ąŖ²ą«ąŖ”ąŖæąŖąŖ (Method Overloading) |
ąŖąŖ ąŖ ąŖą«ąŖ²ąŖ¾ąŖøąŖ®ąŖ¾ąŖ ąŖ ąŖØąŖ¾ąŖ® ąŖøąŖ¾ąŖ„ą«ąŖØą« ąŖ ąŖØą«ąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖµą«ąŖÆąŖ¾ąŖą«ąŖÆąŖ¾ ąŖąŖ°ąŖµą« ąŖŖąŖ°ąŖąŖ¤ą« ąŖą«ąŖ¦ą« ąŖą«ąŖ¦ą« ąŖŖą«ąŖ°ąŖ¾ąŖ®ą«ąŖąŖ°ą«ąŖø ąŖøąŖ¾ąŖ„ą«ą„¤ |
java public class MathUtils { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } } |
ąŖŖą«ąŖ°ąŖ¾ąŖ®ą«ąŖąŖ°ą«ąŖø ąŖŖąŖ° ąŖąŖ§ąŖ¾ąŖ°ąŖæąŖ¤ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖą«ąŖ¦ą« ąŖą«ąŖ¦ą« ąŖąŖ¾ąŖ® ąŖąŖ°ąŖµąŖ¾ ąŖ¦ą« ąŖą«ą„¤ |
- ąŖą«ąŖ®ą«ąŖŖąŖ¾ąŖąŖ²
ąŖąŖ¾ąŖąŖ® ąŖŖąŖ° ąŖØąŖą«ąŖą« ąŖ„ąŖ¾ąŖÆ ąŖą«ą„¤ |
ąŖ®ą«ąŖ„ą«ąŖ” ąŖąŖµąŖ°ąŖ°ąŖ¾ąŖąŖ”ąŖæąŖąŖ (Method Overriding) |
ąŖŖą«ąŖ°ą«ąŖØą«ąŖ ąŖą«ąŖ²ąŖ¾ąŖøąŖ®ąŖ¾ąŖ ąŖŖąŖ¹ą«ąŖ²ą«ąŖ„ą« ąŖ ąŖ¹ąŖ¾ąŖąŖ° ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖØą« ąŖøąŖ¬ąŖą«ąŖ²ąŖ¾ąŖøąŖ®ąŖ¾ąŖ ąŖ«ąŖ°ą«ąŖ„ą« ąŖµą«ąŖÆąŖ¾ąŖą«ąŖÆąŖ¾ąŖÆąŖæąŖ¤ ąŖąŖ°ąŖµą«ą„¤ |
java @Override public void speak() { System.out.println("Woof"); } |
ąŖøąŖ¬ąŖą«ąŖ²ąŖ¾ąŖøąŖØą« ąŖµąŖæąŖ¶ąŖæąŖ·ą«ąŖ ąŖ ąŖ®ąŖ² ąŖŖą«ąŖ°ąŖ¦ąŖ¾ąŖØ ąŖąŖ°ąŖµąŖ¾ąŖØą« ąŖ®ąŖąŖą«ąŖ°ą« ąŖąŖŖą« ąŖą«ą„¤ ąŖąŖ°ą«ąŖ° ąŖŖąŖ”ą« ąŖ¤ą« ąŖŖą«ąŖ°ą«ąŖØą«ąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖØą« super.methodName() ąŖ¦ą«ąŖµąŖ¾ąŖ°ąŖ¾ ąŖą«ąŖ² ąŖąŖ°ą«ą„¤ |
- ąŖ°ąŖØąŖąŖ¾ąŖąŖ®
ąŖŖą«ąŖ²ąŖæąŖ®ą«ąŖ°ą«ąŖ«ąŖæąŖąŖ® ąŖøą«ąŖØąŖæąŖ¶ą«ąŖąŖæąŖ¤ ąŖąŖ°ą« ąŖą«ą„¤ |
ąŖąŖØą«ąŖøą«ąŖą«ąŖ°ąŖą«ąŖąŖ° (Constructor) |
ąŖą«ąŖ²ąŖ¾ąŖøąŖØąŖ¾ ąŖąŖ¬ą«ąŖą«ąŖą«ąŖą«ąŖøąŖØą« ąŖŖą«ąŖ°ąŖ¾ąŖ°ąŖąŖąŖæąŖ ąŖ®ą«ąŖ²ą«ąŖÆą« ąŖąŖŖąŖµąŖ¾ ąŖ®ąŖ¾ąŖą«ąŖØą« ąŖąŖ¾ąŖø ąŖ®ąŖ„ą«ąŖ”ą„¤ |
java public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } } |
Java ąŖ®ąŖ¾ąŖ, ąŖąŖØą«ąŖøą«ąŖą«ąŖ°ąŖą«ąŖąŖ°ą«ąŖøąŖØąŖ¾ ąŖØąŖ¾ąŖ® ąŖą«ąŖ²ąŖ¾ąŖøąŖØąŖ¾ ąŖØąŖ¾ąŖ® ąŖøąŖ¾ąŖ„ą« ąŖ®ą«ąŖ³ ąŖąŖ¾ąŖ¤ąŖ¾ ąŖ¹ą«ąŖÆ ąŖą« ąŖ ąŖØą« ąŖ¤ą«ąŖ®ąŖ¾ąŖ ąŖą«ąŖ ąŖ°ąŖæąŖąŖ°ą«ąŖØ ąŖŖą«ąŖ°ąŖąŖ¾ąŖ° ąŖØąŖ„ą«ą„¤ |
- ąŖąŖµąŖ°ąŖ²ą«ąŖ”
ąŖąŖ°ą« ąŖ¶ąŖąŖ¾ąŖÆ ąŖą«ą„¤ |
ąŖ”ąŖæąŖøą«ąŖą«ąŖ°ąŖą«ąŖąŖ° (Destructor) |
ąŖąŖ¬ą«ąŖą«ąŖą«ąŖąŖØą« ąŖØąŖ·ą«ąŖ ąŖ„ąŖµąŖ¾ ąŖąŖ ąŖ°ąŖ¹ą«ąŖ² ąŖøąŖ®ąŖÆą« ąŖą«ąŖ²ą«ąŖØąŖ ąŖŖ ąŖąŖ¾ąŖ® ąŖąŖ°ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą«ąŖØą« ąŖ®ąŖ„ą«ąŖ”ą„¤ |
Java ąŖŖąŖ¾ąŖøą« C++ ąŖą«ąŖµą« ąŖ”ąŖæąŖøą«ąŖą«ąŖ°ąŖą«ąŖąŖ°ą«ąŖø ąŖØąŖ„ą«; ąŖ¤ą«ąŖØąŖ¾ ąŖ¬ąŖ¦ąŖ²ą« finalize() ąŖ®ąŖ„ą«ąŖ” ąŖą«, ąŖą« ąŖ”ąŖæąŖŖą«ąŖ°ąŖæąŖą«ąŖą«ąŖ” ąŖą« ąŖ ąŖØą« ąŖ¤ą«ąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ąŖµąŖ¾ąŖØą« ąŖąŖ²ąŖ¾ąŖ®ąŖ£ ąŖąŖ°ąŖ¾ąŖ¤ą« ąŖØąŖ„ą«ą„¤ |
ąŖąŖ¾ąŖ°ą«ąŖ¬ą«ąŖ ąŖąŖ²ą«ąŖąŖ¶ąŖØ ąŖŖąŖ° ąŖąŖ§ąŖ¾ąŖ° ąŖ°ąŖ¾ąŖą«ą„¤ ąŖ°ąŖæąŖøą«ąŖ°ą«ąŖø ąŖ®ą«ąŖØą«ąŖąŖ®ą«ąŖØą«ąŖ ąŖ®ąŖ¾ąŖą« ąŖą«ąŖ°ąŖ¾ąŖÆ-ąŖµąŖæąŖ„-ąŖ°ąŖøą«ąŖ°ą«ąŖø ąŖ ąŖ„ąŖµąŖ¾ ąŖøą«ąŖŖąŖ·ą«ąŖ ąŖą«ąŖ²ą«ąŖØąŖ ąŖŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ |
- ąŖøą«ąŖŖąŖ·ą«ąŖ
ąŖ°ąŖæąŖøą«ąŖ°ą«ąŖø ąŖ®ą«ąŖØą«ąŖąŖ®ą«ąŖØą«ąŖąŖØą« ąŖŖą«ąŖ°ąŖ¾ąŖ§ąŖ¾ąŖØą«ąŖÆ ąŖąŖŖą« (ąŖąŖ¦ąŖ¾ąŖ¹ąŖ°ąŖ£ ąŖ¤ąŖ°ą«ąŖą«, try-with-resources ąŖ®ąŖ¾ąŖą« AutoCloseable ąŖąŖ¬ą«ąŖą«ąŖą«ąŖą«ąŖø). |
ąŖąŖą«ąŖøą«ąŖø ąŖ®ą«ąŖ”ąŖæąŖ«ąŖ¾ąŖÆąŖ°ą«ąŖø (Access Modifiers) |
ąŖą«ąŖ²ąŖ¾ąŖø, ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ ąŖØą« ąŖą«ąŖ£ąŖ§ąŖ°ą«ąŖ®ą«ąŖØą« ąŖąŖą«ąŖøą«ąŖøąŖæąŖ¬ąŖæąŖ²ąŖæąŖą« ąŖøą«ąŖ ąŖąŖ°ąŖ¤ą« ąŖą«ąŖµąŖ°ą«ąŖ”ą«ąŖøą„¤ |
java public class Example { public String publicVar; protected String protectedVar; private String privateVar; } |
public: ąŖ¦ąŖ°ą«ąŖ
ąŖąŖą«ąŖÆąŖ¾ąŖ ąŖąŖą«ąŖøą«ąŖø ąŖąŖ°ą« ąŖ¶ąŖąŖ¾ąŖÆ ąŖą«ą„¤ |
- ąŖ”ąŖæąŖ«ą«ąŖ²ą«ąŖ
(ąŖą«ąŖ ąŖ®ą«ąŖ”ąŖæąŖ«ąŖ¾ąŖÆąŖ° ąŖØ ąŖ¹ą«ąŖµąŖ¾) ąŖŖą«ąŖą«ąŖ-ąŖŖą«ąŖ°ąŖ¾ąŖąŖµą«ąŖ ąŖą«ą„¤ |
ąŖøą«ąŖą«ąŖąŖæąŖ ąŖøąŖą«ąŖÆą« (Static Members) |
ąŖą«ąŖ£ąŖ§ąŖ°ą«ąŖ®ą« ąŖ ąŖ„ąŖµąŖ¾ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖą« ąŖą«ąŖ²ąŖ¾ąŖø ąŖøąŖ¾ąŖ„ą« ąŖøąŖąŖąŖ³ąŖ¾ąŖÆą«ąŖ²ąŖ¾ ąŖ¹ą«ąŖÆ ąŖą« ąŖ ąŖØą« ąŖą«ąŖ ąŖąŖ¬ą«ąŖą«ąŖą«ąŖ ąŖøąŖ¾ąŖ„ą« ąŖØąŖ¹ą«ąŖą„¤ |
java public class MathUtils { public static final double PI = 3.14159; public static int add(int a, int b) { return a + b; } } // ąŖąŖŖąŖÆą«ąŖ int result = MathUtils.add(5, 3); // ąŖąŖąŖąŖŖą«ąŖ: 8 double pi = MathUtils.PI; // 3.14159 |
ąŖą«ąŖ²ąŖ¾ąŖø ąŖØąŖ¾ąŖ®ąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖąŖą«ąŖøą«ąŖø ąŖąŖ°ą« ąŖ ąŖØą« ąŖąŖ¬ą«ąŖą«ąŖą«ąŖ ąŖ¬ąŖØąŖ¾ąŖµą«ąŖÆąŖ¾ ąŖµąŖæąŖØąŖ¾ ąŖąŖą«ąŖøą«ąŖø ąŖąŖ°ą« ąŖ¶ąŖą« ąŖą«ą„¤ ąŖÆą«ąŖąŖæąŖ²ąŖæąŖą« ąŖ«ąŖąŖą«ąŖ¶ąŖØą«ąŖø ąŖ ąŖØą« ąŖą«ąŖØą«ąŖøą«ąŖą«ąŖØą«ąŖą«ąŖø ąŖ®ąŖ¾ąŖą« ąŖąŖŖąŖÆą«ąŖą«ą„¤ |
- static ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ
ąŖøą«ąŖ§ąŖ¾ instance
variables ąŖØą« ąŖąŖą«ąŖøą«ąŖø ąŖØąŖ„ą« ąŖąŖ°ą« ąŖ¶ąŖąŖ¤ą«ą„¤ |
ąŖąŖ¬ąŖøą«ąŖą«ąŖ°ąŖ¾ąŖą«ąŖ ąŖą«ąŖ²ąŖ¾ąŖø (Abstract Class) |
ąŖąŖ ąŖą«ąŖ²ąŖ¾ąŖø ąŖą«ąŖØą« ąŖąŖØą«ąŖøą«ąŖą«ąŖØą«ąŖø ąŖ¬ąŖØąŖ¾ąŖµąŖµąŖ¾ąŖ®ąŖ¾ąŖ ąŖØ ąŖąŖµą« ąŖ ąŖØą« ąŖ¤ą«ąŖ®ąŖ¾ąŖ ąŖąŖ¬ąŖøą«ąŖą«ąŖ°ąŖ¾ąŖą«ąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ¹ą«ąŖ ąŖ¶ąŖą« ąŖą« ąŖą« ąŖøąŖ¬ąŖą«ąŖ²ąŖ¾ąŖøą«ąŖø ąŖ¦ą«ąŖµąŖ¾ąŖ°ąŖ¾ ąŖ ąŖ®ąŖ² ąŖąŖ°ąŖµą« ąŖąŖ°ą«ąŖ°ą« ąŖą«ą„¤ |
java public abstract class Vehicle { public abstract void move(); } public class Bicycle extends Vehicle { @Override public void move() { System.out.println("Pedaling"); } } |
ąŖ ąŖØą«ąŖÆ ąŖą«ąŖ²ąŖ¾ąŖøąŖæąŖø ąŖ®ąŖ¾ąŖą« ąŖąŖ§ąŖ¾ąŖ° ąŖ¤ąŖ°ą«ąŖą« ąŖąŖ¾ąŖ°ą«ąŖÆ ąŖąŖ°ą« ąŖą«ą„¤ ąŖ ąŖ®ąŖ²ąŖ®ąŖ¾ąŖ ąŖ¹ą«ąŖ¤ą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ ąŖØą« ąŖ ąŖ®ąŖ² ąŖØ ąŖ¹ą«ąŖ¤ą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ¹ą«ąŖ ąŖ¶ąŖą« ąŖą«ą„¤ |
- ąŖøąŖ¾ąŖ®ąŖ¾ąŖØą«ąŖÆ
ąŖąŖ§ąŖ¾ąŖ° ąŖ®ąŖ¾ąŖą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą« ąŖŖąŖ°ąŖąŖ¤ą« ąŖ
ąŖ²ąŖ-ąŖ
ąŖ²ąŖ ąŖ
ąŖ®ąŖ² ąŖøąŖ¾ąŖ„ą«ą„¤ |
ąŖ¬ąŖ¹ą«ąŖ®ą«ąŖą« ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø (Multiple Inheritance) |
ąŖąŖ ąŖą«ąŖ²ąŖ¾ąŖø ąŖµąŖ§ą« ąŖąŖ ąŖąŖ§ąŖ¾ąŖ° ąŖą«ąŖ²ąŖ¾ąŖøąŖ®ąŖ¾ąŖąŖ„ą« ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖ ąŖąŖ°ą« ąŖ¶ąŖą« ąŖą«, ąŖ¤ą«ąŖ®ąŖØąŖ¾ ąŖ«ą«ąŖąŖ°ą«ąŖøąŖØą« ąŖą«ąŖ”ą«ąŖØą«ą„¤ |
Java ąŖ¬ąŖ¹ą«ąŖ®ą«ąŖą« ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø ąŖøąŖ®ąŖ°ą«ąŖ„ąŖØ ąŖØąŖ„ą« ąŖąŖŖą«, ąŖŖąŖ°ąŖąŖ¤ą« ąŖ¬ąŖ¹ą«ąŖµąŖæąŖ§ ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø ąŖ ąŖ®ąŖ² ąŖąŖ°ąŖµąŖ¾ąŖØą« ąŖ®ąŖąŖą«ąŖ°ą« ąŖąŖŖą« ąŖą«ą„¤ |
ąŖ”ąŖ¾ąŖÆąŖ®ąŖąŖ” ąŖŖą«ąŖ°ą«ąŖ¬ą«ąŖ²ą«ąŖ®ąŖØą« ąŖąŖ¾ąŖ³ą«ą„¤ ąŖøąŖ®ąŖ¾ąŖØ ąŖŖąŖ°ąŖæąŖ£ąŖ¾ąŖ® ąŖ®ąŖ¾ąŖą« ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ |
- ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø ąŖØą«
ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖ¬ąŖ¹ą«ąŖµąŖæąŖ§ ąŖµąŖ°ą«ąŖ¤ąŖØą« ąŖ
ąŖ®ąŖ² ąŖąŖ°ą«ą„¤ |
ąŖøąŖąŖÆą«ąŖąŖØ vs ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø (Composition vs Inheritance) |
ąŖąŖŖąŖÆą«ąŖ ąŖą«ąŖø ąŖŖąŖ° ąŖąŖ§ąŖ¾ąŖ°ąŖæąŖ¤ "ąŖ¹ąŖ¾ąŖø-ąŖ" (ąŖøąŖąŖÆą«ąŖąŖØ) ąŖ ąŖØą« "ąŖąŖ-ąŖ" (ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø) ąŖøąŖąŖ¬ąŖąŖ§ą«ąŖØą« ąŖµąŖą«ąŖą« ąŖŖąŖøąŖąŖ¦ąŖą« ąŖąŖ°ąŖµą«ą„¤ |
ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø "ąŖąŖ-ąŖ" ąŖ®ąŖ¾ąŖą« (ąŖąŖ¦ąŖ¾ąŖ¹ąŖ°ąŖ£: Dog is an Animal). ąŖøąŖąŖÆą«ąŖąŖØ "ąŖ¹ąŖ¾ąŖø-ąŖ" ąŖ®ąŖ¾ąŖą« (ąŖąŖ¦ąŖ¾ąŖ¹ąŖ°ąŖ£: Car has an Engine). |
ąŖ²ąŖµąŖą«ąŖąŖ¤ąŖ¾ ąŖŖą«ąŖ°ą«ąŖ¤ą«ąŖøąŖ¾ąŖ¹ąŖæąŖ¤ ąŖąŖ°ą« ąŖą« ąŖ ąŖØą« ąŖøąŖąŖÆą«ąŖąŖØąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ąŖµąŖ¾ąŖ„ą« ąŖąŖøąŖµą«ąŖ ąŖą«ąŖ”ąŖ¾ąŖ£ ąŖąŖąŖ¾ąŖ”ą« ąŖą«ą„¤ |
- ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø: ąŖ¹ąŖ¾ąŖÆąŖ°ąŖ¾ąŖ°ą«ąŖąŖæąŖąŖ²
ąŖøąŖąŖ¬ąŖąŖ§ą« ąŖ®ąŖ¾ąŖą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ |
SOLID ąŖøąŖæąŖ¦ą«ąŖ§ąŖ¾ąŖąŖ¤ą« (SOLID Principles) |
ąŖŖąŖ¾ąŖąŖ ąŖ”ąŖæąŖąŖ¾ąŖąŖØ ąŖøąŖæąŖ¦ą«ąŖ§ąŖ¾ąŖąŖ¤ą« ąŖą« ąŖøą«ąŖ«ą«ąŖąŖµą«ąŖ° ąŖ”ąŖæąŖąŖ¾ąŖąŖØą«ąŖøąŖØą« ąŖµąŖ§ą« ąŖøąŖ®ąŖąŖ£ąŖÆą«ąŖą«ąŖ¤, ąŖ²ąŖµąŖą«ąŖ ąŖ ąŖØą« ąŖąŖ¾ąŖ³ąŖµąŖ£ą«ąŖą«ąŖ·ąŖ® ąŖ¬ąŖØąŖ¾ąŖµą« ąŖą«ą„¤ |
Single Responsibility |
SOLID ąŖøąŖæąŖ¦ą«ąŖ§ąŖ¾ąŖąŖ¤ą«ąŖØą« ąŖ ąŖØą«ąŖøąŖ°ą« ąŖą«ąŖ” ąŖą«ąŖ£ąŖµąŖ¤ą«ąŖ¤ąŖ¾ ąŖ ąŖØą« ąŖąŖ¾ąŖ³ąŖµąŖ£ą«ąŖą«ąŖ·ąŖ®ąŖ¤ąŖ¾ ąŖøą«ąŖ§ąŖ¾ąŖ°ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą«ą„¤ |
- Single
Responsibility: ąŖąŖ ąŖą«ąŖ²ąŖ¾ąŖø ąŖŖąŖ¾ąŖøą« ąŖ®ąŖ¾ąŖ¤ą«ąŖ° ąŖąŖ ąŖ ąŖ¬ąŖ¦ąŖ²ąŖ¾ąŖµąŖØą« ąŖąŖ¾ąŖ°ąŖ£
ąŖ¹ą«ąŖµą« ąŖą«ąŖąŖą„¤ |
ąŖ”ąŖæąŖąŖ¾ąŖąŖØ ąŖŖą«ąŖąŖ°ą«ąŖØ (Design Patterns) |
ąŖøąŖ¾ąŖ®ąŖ¾ąŖØą«ąŖÆ ąŖøą«ąŖ«ą«ąŖąŖµą«ąŖ° ąŖ”ąŖæąŖąŖ¾ąŖąŖØ ąŖøąŖ®ąŖøą«ąŖÆąŖ¾ąŖąŖØąŖ¾ ąŖŖą«ąŖØąŖąŖµąŖŖąŖ°ąŖ¾ąŖÆ ąŖ¶ąŖąŖ¤ąŖ¾ ąŖąŖą«ąŖ²ą«ą„¤ |
Singleton: ąŖąŖ¾ąŖ¤ąŖ°ą«
ąŖąŖ°ą« ąŖą« ąŖą« ąŖąŖ ąŖą«ąŖ²ąŖ¾ąŖøąŖØą«ąŖ ąŖ«ąŖą«ąŖ¤ ąŖąŖ ąŖ ąŖąŖØą«ąŖøą«ąŖąŖØą«ąŖø ąŖ¹ą«ąŖÆą„¤ |
ąŖ”ąŖæąŖąŖ¾ąŖąŖØ ąŖŖą«ąŖąŖ°ą«ąŖØą«ąŖøąŖØą« ąŖąŖ³ąŖ ąŖą«ąŖ” ąŖøąŖ®ąŖøą«ąŖÆąŖ¾ąŖąŖØą« ąŖąŖą«ąŖ²ąŖµąŖ¾ąŖ®ąŖ¾ąŖ ąŖąŖ£ą« ąŖ®ąŖ¦ąŖ¦ąŖ°ą«ąŖŖ ąŖ„ąŖ ąŖ¶ąŖą« ąŖą«ą„¤ |
- ąŖą«ąŖÆąŖ¾ąŖ°ą«
ąŖ
ąŖØą« ąŖą«ąŖµą« ąŖ°ą«ąŖ¤ą« ąŖŖą«ąŖąŖ°ą«ąŖØą«ąŖøąŖØą« ąŖ²ąŖ¾ąŖą« ąŖąŖ°ąŖµą« ąŖ¤ą« ąŖøąŖ®ąŖąŖµą«ąŖ ąŖąŖ°ą«ąŖ°ą« ąŖą«ą„¤ |
UML ąŖ”ąŖ¾ąŖÆąŖą«ąŖ°ąŖ¾ąŖ®ą«ąŖø (UML Diagrams) |
OOP ąŖ®ąŖ¾ąŖ ąŖą«ąŖ²ąŖ¾ąŖøąŖæąŖø ąŖ ąŖØą« ąŖ¤ą«ąŖ®ąŖØąŖ¾ ąŖøąŖąŖ¬ąŖąŖ§ą«ąŖØąŖ¾ ąŖµąŖæąŖą«ąŖÆą«ąŖ ąŖ² ąŖŖą«ąŖ°ąŖ¤ąŖæąŖØąŖæąŖ§ąŖæąŖ¤ą«ąŖµą«ą„¤ |
ąŖąŖ¦ąŖ¾ąŖ¹ąŖ°ąŖ£ UML ąŖą«ąŖ²ąŖ¾ąŖø ąŖ”ąŖ¾ąŖÆąŖą«ąŖ°ąŖ¾ąŖ®: |
ąŖøą«ąŖ«ą«ąŖąŖµą«ąŖ° ąŖąŖ°ą«ąŖąŖæąŖą«ąŖą«ąŖąŖ°ąŖØą« ąŖŖą«ąŖ²ąŖ¾ąŖØ ąŖ ąŖØą« ąŖ¦ąŖøą«ąŖ¤ąŖ¾ąŖµą«ąŖą«ąŖąŖ°ąŖ£ ąŖ®ąŖ¾ąŖą« ąŖąŖŖąŖÆą«ąŖą«ą„¤ ąŖą«ąŖ²ą«ąŖø: Lucidchart, draw.io, PlantUMLą„¤ |
- ąŖøąŖæąŖøą«ąŖąŖ®ąŖØą«
ąŖ°ąŖąŖØąŖ¾ ąŖ
ąŖØą« ąŖŖąŖ°ąŖøą«ąŖŖąŖ° ąŖą«ąŖ°ąŖæąŖÆąŖ¾ąŖąŖØą« ąŖµąŖæąŖą«ąŖÆą«ąŖ
ąŖ²ąŖ¾ąŖąŖ ąŖąŖ°ąŖµąŖ¾ąŖ®ąŖ¾ąŖ ąŖ®ąŖ¦ąŖ¦ ąŖąŖ°ą« ąŖą«ą„¤ |
ąŖ”ąŖ ąŖąŖ¾ąŖąŖŖąŖæąŖąŖ (Duck Typing) |
ąŖąŖ¬ą«ąŖą«ąŖą«ąŖąŖØą« ąŖÆą«ąŖą«ąŖÆąŖ¤ąŖ¾ ąŖąŖØąŖ¾ ąŖµąŖæąŖ¶ąŖæąŖ·ą«ąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ ąŖØą« ąŖą«ąŖ£ąŖ§ąŖ°ą«ąŖ®ą«ąŖØą« ąŖ¹ąŖ¾ąŖąŖ°ą«ąŖ„ą« ąŖØąŖą«ąŖą« ąŖ„ąŖ¾ąŖÆ ąŖą«, ąŖØ ąŖą« ąŖŖą«ąŖ°ąŖąŖ¾ąŖ°ąŖ„ą«ą„¤ |
Java ąŖøą«ąŖą«ąŖąŖæąŖ ąŖąŖ¾ąŖąŖŖą«ąŖ” ąŖą« ąŖ ąŖØą« ąŖøą«ąŖ§ąŖ¾ ąŖ”ąŖ ąŖąŖ¾ąŖąŖŖąŖæąŖąŖąŖØą« ąŖøąŖ®ąŖ°ą«ąŖ„ąŖØ ąŖØąŖ„ą« ąŖąŖŖą«ą„¤ ąŖ¤ą«ąŖØąŖ¾ ąŖ¬ąŖ¦ąŖ²ą«, Java ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖøąŖ®ąŖ¾ąŖØ ąŖµąŖ°ą«ąŖ¤ąŖØ ąŖŖą«ąŖ°ąŖ¾ąŖŖą«ąŖ¤ ąŖąŖ°ą« ąŖą«ą„¤ |
ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø ąŖąŖ§ąŖ¾ąŖ°ąŖæąŖ¤ ąŖ”ąŖæąŖąŖ¾ąŖąŖØ ąŖ¦ą«ąŖµąŖ¾ąŖ°ąŖ¾ ąŖ²ąŖµąŖą«ąŖąŖ¤ąŖ¾ ąŖ ąŖØą« ąŖŖą«ąŖØąŖąŖąŖŖąŖÆą«ąŖ ąŖŖą«ąŖ°ą«ąŖ¤ą«ąŖøąŖ¾ąŖ¹ąŖæąŖ¤ ąŖąŖ°ą« ąŖą«ą„¤ |
- ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø ąŖØą«
ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖą«ąŖ·ąŖ®ąŖ¤ąŖ¾ąŖąŖØą« ąŖµą«ąŖÆąŖ¾ąŖą«ąŖÆąŖ¾ąŖÆąŖæąŖ¤ ąŖąŖ°ą« ąŖąŖ²ą« ąŖą«ąŖ²ąŖ¾ąŖø ąŖ¹ąŖ¾ąŖÆąŖ°ąŖ¾ąŖ°ą«ąŖą« ąŖąŖąŖąŖŖąŖ£ ąŖ¹ą«ąŖÆą„¤ |
ąŖ®ąŖæąŖą«ąŖøąŖæąŖØ (Mixin) |
ąŖąŖ ąŖą«ąŖ²ąŖ¾ąŖø ąŖą« ąŖ ąŖØą«ąŖÆ ąŖą«ąŖ²ąŖ¾ąŖøąŖæąŖøąŖØą« ąŖŖą«ąŖ°ą«ąŖØą«ąŖ ąŖą«ąŖ²ąŖ¾ąŖø ąŖ¬ąŖØą«ąŖÆąŖ¾ ąŖµąŖæąŖØąŖ¾ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖŖą«ąŖ°ąŖ¦ąŖ¾ąŖØ ąŖąŖ°ą« ąŖą«ą„¤ |
Java ąŖ®ąŖ¾ąŖ ąŖ®ąŖæąŖą«ąŖøąŖæąŖØą«ąŖø ąŖØąŖ„ą«, ąŖŖąŖ°ąŖąŖ¤ą« ąŖ”ąŖæąŖ«ą«ąŖ²ą«ąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖøąŖ¾ąŖ„ą«ąŖØąŖ¾ ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø ąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖøąŖ®ąŖ¾ąŖØ ąŖµąŖ°ą«ąŖ¤ąŖØ ąŖŖą«ąŖ°ąŖ¾ąŖŖą«ąŖ¤ ąŖąŖ°ą« ąŖ¶ąŖąŖ¾ąŖÆ ąŖą«ą„¤ |
ąŖ®ąŖæąŖą«ąŖøąŖæąŖØ-ąŖøąŖ®ąŖ¾ąŖØ ąŖąŖ¾ąŖ°ą«ąŖÆąŖą«ąŖ·ąŖ®ąŖ¤ąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖ”ąŖæąŖ«ą«ąŖ²ą«ąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖøąŖ¾ąŖ„ą«ąŖØąŖ¾ ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ |
- ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖøąŖØą«
ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖÆąŖ¾ ąŖµąŖæąŖØąŖ¾ ąŖą«ąŖ²ąŖ¾ąŖøąŖæąŖøąŖ®ąŖ¾ąŖ ąŖąŖ¾ąŖ°ą«ąŖÆąŖą«ąŖ·ąŖ®ąŖ¤ąŖ¾ ąŖąŖ®ą«ąŖ°ąŖµąŖ¾ ąŖ¦ą« ąŖą«ą„¤ |
ąŖąŖØą«ąŖą« ąŖŖą«ąŖøą«ąŖÆą«ąŖ²ą«ąŖ¶ąŖØ ąŖą«ąŖą«ąŖØąŖæąŖą«ąŖø (Encapsulation Techniques) |
ąŖąŖ¬ą«ąŖą«ąŖą«ąŖąŖØą« ąŖąŖąŖ¤ąŖ°ąŖæąŖ ąŖ°ąŖ¾ąŖą«ąŖÆąŖØą« ąŖøą«ąŖ°ąŖą«ąŖ·ąŖæąŖ¤ ąŖąŖ°ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą«ąŖØą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖą„¤ |
java public class Account { private double balance; public void deposit(double amount) { balance += amount; } public double getBalance() { return balance; } } |
ąŖąŖ¾ąŖØąŖą« ąŖ ąŖ„ąŖµąŖ¾ ąŖŖą«ąŖ°ą«ąŖą«ąŖą«ąŖą«ąŖ” ąŖą«ąŖ£ąŖ§ąŖ°ą«ąŖ®ą«ąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ ąŖąŖ¾ąŖ¹ą«ąŖ° getter ąŖ ąŖØą« setter ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖŖą«ąŖ°ąŖ¦ąŖ¾ąŖØ ąŖąŖ°ą«ą„¤ ąŖąŖ¾ąŖµąŖ¾ąŖ®ąŖ¾ąŖ ąŖŖą«ąŖ°ą«ąŖŖąŖ°ą«ąŖą«ąŖ ąŖ®ąŖ¾ąŖą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ |
- ąŖąŖ¬ą«ąŖą«ąŖą«ąŖ
ąŖ”ą«ąŖąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖØąŖæąŖÆąŖąŖ¤ą«ąŖ°ąŖæąŖ¤ ąŖąŖą«ąŖøą«ąŖø ąŖ
ąŖØą« ąŖøą«ąŖ§ąŖ¾ąŖ°ąŖ¾ ąŖøą«ąŖØąŖæąŖ¶ą«ąŖąŖæąŖ¤ ąŖąŖ°ą« ąŖą«ą„¤ |
ąŖąŖøą«ąŖøąŖæąŖąŖ¶ąŖØ (Association) |
ąŖąŖ ąŖøąŖąŖ¬ąŖąŖ§ ąŖą«ąŖÆąŖ¾ąŖ ąŖąŖ ąŖą«ąŖ²ąŖ¾ąŖø ąŖ ąŖØą«ąŖÆ ąŖą«ąŖ²ąŖ¾ąŖø ąŖøąŖ¾ąŖ„ą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą« ąŖą« ąŖ ąŖ„ąŖµąŖ¾ ąŖøąŖąŖąŖ³ąŖ¾ąŖÆą«ąŖ²ą« ąŖą«ą„¤ |
java public class Teacher { private String name; public Teacher(String name) { this.name = name; } } public class Student { private String name; private Teacher teacher; public Student(String name, Teacher teacher) { this.name = name; this.teacher = teacher; } } |
"Uses-a" ąŖøąŖąŖ¬ąŖąŖ§ ąŖ¦ąŖ°ą«ąŖ¶ąŖ¾ąŖµą« ąŖą«ą„¤ ąŖ¬ąŖąŖØą« ąŖą«ąŖ²ąŖ¾ąŖøąŖæąŖø ąŖøą«ąŖµąŖ¤ąŖąŖ¤ą«ąŖ° ąŖ°ą«ąŖ¤ą« ąŖ ąŖøą«ąŖ¤ąŖæąŖ¤ą«ąŖµąŖ®ąŖ¾ąŖ ąŖ°ąŖ¹ą« ąŖ¶ąŖą« ąŖą«ą„¤ |
- ąŖąŖ-ąŖ„ą«-ąŖąŖ, ąŖąŖ-ąŖ„ą«-ąŖ¬ąŖ¹ą«, ąŖ
ąŖ„ąŖµąŖ¾
ąŖ¬ąŖ¹ą«-ąŖ„ą«-ąŖ¬ąŖ¹ą« ąŖ¹ą«ąŖ ąŖ¶ąŖą« ąŖą«ą„¤ |
ąŖ”ąŖæąŖŖą«ąŖØą«ąŖ”ą«ąŖąŖøą« ąŖąŖØą«ąŖą«ąŖą«ąŖ¶ąŖØ (Dependency Injection) |
ąŖąŖ ąŖ”ąŖæąŖąŖ¾ąŖąŖØ ąŖŖą«ąŖąŖ°ą«ąŖØ ąŖą«ąŖÆąŖ¾ąŖ ąŖąŖ¬ą«ąŖą«ąŖą«ąŖąŖØą« ąŖ¤ą« ąŖ”ąŖæąŖŖą«ąŖØą«ąŖ”ą«ąŖąŖøą« ąŖ¦ą«ąŖµąŖ¾ąŖ ąŖą«, ąŖ¤ą«ąŖØąŖ¾ ąŖ ąŖąŖ¦ąŖ° ąŖ¤ą« ąŖ¬ąŖØąŖ¾ąŖµą«ąŖØą« ąŖØąŖ¹ą«ąŖą„¤ |
java public class Database { public void connect() { System.out.println("Database connected"); } } public class Repository { private Database db; public Repository(Database db) { this.db = db; } public String getData() { db.connect(); return "Data"; } } |
ąŖ®ą«ąŖ”ą«ąŖÆą«ąŖ²ąŖ¾ąŖ°ąŖæąŖą« ąŖµąŖ§ą« ąŖą« ąŖ ąŖØą« ąŖ”ąŖæąŖŖą«ąŖØą«ąŖ”ą«ąŖąŖøą« ąŖ”ą«ąŖąŖŖąŖ²ąŖæąŖąŖ ąŖ¦ą«ąŖµąŖ¾ąŖ°ąŖ¾ ąŖą«ąŖøą«ąŖąŖæąŖąŖ ąŖøąŖ°ąŖ³ ąŖ¬ąŖØą« ąŖą«ą„¤ |
- ąŖµąŖ§ą«
ąŖŖąŖ°ąŖæąŖŖą«ąŖ°ą«ąŖ£ Spring ąŖą«ąŖµąŖ¾
ąŖ«ą«ąŖ°ą«ąŖ®ąŖµąŖ°ą«ąŖąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« DI
ąŖØą« ąŖąŖąŖ³ ąŖµąŖ§ąŖ¾ąŖ°ąŖµą«ąŖą„¤ |
ąŖ²ą«ąŖ ąŖ¬ąŖ¾ąŖąŖØą«ąŖ”ąŖæąŖąŖ (Late Binding) |
ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖØąŖ¾ ąŖą«ąŖ²ą«ąŖø ąŖ°ąŖØąŖąŖ¾ąŖąŖ® ąŖ¦ąŖ°ąŖ®ąŖæąŖÆąŖ¾ąŖØ ąŖØąŖą«ąŖą« ąŖ„ąŖ¾ąŖÆ ąŖą«, ąŖą«ąŖ®ą«ąŖŖąŖ¾ąŖąŖ²-ąŖąŖ¾ąŖąŖ® ąŖ¦ąŖ°ąŖ®ąŖæąŖÆąŖ¾ąŖØ ąŖØąŖ¹ą«ąŖą„¤ |
java public class Base { public void action() { System.out.println("Base action"); } } public class Derived extends Base { @Override public void action() { System.out.println("Derived action"); } } public class Test { public static void main(String[] args) { Base obj = new Derived(); obj.action(); // ąŖąŖąŖąŖŖą«ąŖ: Derived action } } |
ąŖŖą«ąŖ²ąŖæąŖ®ą«ąŖ°ą«ąŖ«ąŖæąŖąŖ®ąŖØą« ąŖøąŖą«ąŖ·ąŖ® ąŖ¬ąŖØąŖ¾ąŖµą« ąŖą«ą„¤ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæ ąŖą« ąŖ ąŖ®ąŖ² ąŖ„ąŖ¶ą« ąŖ¤ą« ąŖąŖ¬ą«ąŖą«ąŖą«ąŖąŖØąŖ¾ ąŖµąŖ¾ąŖøą«ąŖ¤ąŖµąŖæąŖ ąŖŖą«ąŖ°ąŖąŖ¾ąŖ° ąŖŖąŖ° ąŖąŖ§ąŖ¾ąŖ° ąŖ°ąŖ¾ąŖą« ąŖą«ą„¤ |
- ąŖ°ąŖØąŖąŖ¾ąŖąŖ®
ąŖŖą«ąŖ²ąŖæąŖ®ą«ąŖ°ą«ąŖ«ąŖæąŖąŖ®ąŖØą« ąŖ®ą«ąŖ³ąŖą«ąŖ¤ ąŖąŖ¾ąŖ ąŖą«ą„¤ |
ąŖ®ą«ąŖ„ą«ąŖ” ąŖą«ąŖąŖØąŖæąŖąŖ (Method Chaining) |
ąŖąŖ„ą«ąŖ„ą« ąŖąŖ ąŖ ąŖąŖ¬ą«ąŖą«ąŖą«ąŖ ąŖŖąŖ° ąŖ ąŖØą«ąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖąŖ ąŖ ąŖøą«ąŖą«ąŖąŖ®ą«ąŖØą«ąŖąŖ®ąŖ¾ąŖ ąŖą«ąŖ² ąŖąŖ°ąŖµą«ą„¤ |
java public class Builder { private String value = ""; public Builder add(String text) { value += text; return this; } public String build() { return value; } } // ąŖąŖŖąŖÆą«ąŖ Builder builder = new Builder(); String result = builder.add("Hello ").add("World").build(); // "Hello World" |
ąŖµąŖ¾ąŖąŖąŖØąŖą«ąŖ·ąŖ®ąŖ¤ąŖ¾ ąŖøą«ąŖ§ąŖ°ą« ąŖą« ąŖ ąŖØą« ąŖ«ą«ąŖ²ą«ąŖąŖØą«ąŖ ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖøąŖØą« ąŖ®ąŖąŖą«ąŖ°ą« ąŖąŖŖą« ąŖą«ą„¤ ąŖą«ąŖąŖØąŖæąŖąŖąŖØą« ąŖøąŖą«ąŖ·ąŖ® ąŖ¬ąŖØąŖ¾ąŖµąŖµąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖ®ąŖ¾ąŖ this ąŖŖąŖ°ąŖ¤ ąŖąŖ°ą«ą„¤ |
- Builder patterns ąŖ
ąŖØą«
ąŖ«ą«ąŖ²ą«ąŖąŖØą«ąŖ APIs ąŖ®ąŖ¾ąŖ
ąŖøąŖ¾ąŖ®ąŖ¾ąŖØą«ąŖÆ ąŖą«ą„¤ |
ąŖąŖą«ąŖøą«ąŖŖą«ąŖ¶ąŖØ ąŖ¹ą«ąŖØą«ąŖ”ąŖ²ąŖæąŖąŖ ąŖąŖØ OOP (Exception Handling in OOP) |
ąŖą«ąŖ”ąŖ®ąŖ¾ąŖ ąŖą«ąŖ²ą« ąŖ ąŖØą« ąŖ ąŖŖą«ąŖą«ąŖ·ąŖæąŖ¤ ąŖ ąŖŖąŖµąŖ¾ąŖ¦ą«ąŖØą« ąŖµą«ąŖÆąŖµąŖøą«ąŖ„ąŖæąŖ¤ ąŖąŖ°ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą«, ąŖąŖą«ąŖ·ąŖ¾ąŖØąŖ¾ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖ®ąŖ¾ąŖ ąŖąŖą«ąŖøą«ąŖŖą«ąŖ¶ąŖØ ąŖ¹ą«ąŖØą«ąŖ”ąŖ²ąŖæąŖąŖąŖØą« ąŖąŖØą«ąŖąŖæąŖą«ąŖ°ą«ąŖ ąŖąŖ°ąŖµą«ąŖą„¤ |
java public class Calculator { public double divide(double a, double b) { try { return a / b; } catch (ArithmeticException e) { System.out.println("Cannot divide by zero"); return 0; } } } |
ąŖ ąŖŖą«ąŖą«ąŖ·ąŖæąŖ¤ ąŖŖąŖ°ąŖæąŖøą«ąŖ„ąŖæąŖ¤ąŖæąŖąŖØą« ąŖ¦ąŖą«ąŖ·ąŖ¤ąŖ¾ ąŖŖą«ąŖ°ą«ąŖµąŖ ąŖøąŖąŖąŖ¾ąŖ³ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖ®ąŖ¾ąŖ ąŖąŖą«ąŖøą«ąŖŖą«ąŖ¶ąŖØ ąŖ¹ą«ąŖØą«ąŖ”ąŖ²ąŖæąŖąŖąŖØą« ąŖøąŖ®ąŖ¾ąŖµąŖæąŖ·ą«ąŖ ąŖąŖ°ą«ą„¤ |
- ąŖøą«ąŖŖąŖ·ą«ąŖ
ąŖąŖą«ąŖøą«ąŖŖą«ąŖ¶ąŖØą«ąŖø ąŖ®ąŖ¾ąŖą« ąŖµąŖæąŖ¶ąŖæąŖ·ą«ąŖ ąŖ
ąŖŖą«ąŖą«ąŖ·ąŖæąŖ¤ ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ |
ąŖ ąŖŖą«ąŖ°ąŖ¤ąŖæąŖ¬ąŖąŖ§ ąŖąŖ¬ą«ąŖą«ąŖą«ąŖą«ąŖø (Immutable Objects) |
ąŖąŖµąŖ¾ ąŖąŖ¬ą«ąŖą«ąŖą«ąŖą«ąŖø ąŖą«ąŖ®ąŖØą« ąŖøą«ąŖ„ąŖæąŖ¤ąŖæ ąŖøąŖ°ą«ąŖąŖØ ąŖŖąŖą« ąŖ¬ąŖ¦ąŖ²ąŖ¾ąŖ ąŖ¶ąŖą« ąŖØąŖ¹ą«ąŖą„¤ |
java public final class Point { private final int x; private final int y; public Point(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public int getY() { return y; } } |
final ąŖą«ąŖµąŖ°ą«ąŖ”ąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖ«ą«ąŖ°ąŖ«ąŖ¾ąŖ° ąŖ ąŖąŖąŖ¾ąŖµą«ą„¤ ąŖøą«ąŖąŖ°ą«ąŖøąŖØą« ąŖąŖ°ą«ąŖ° ąŖØ ąŖ¹ą«ąŖÆ ąŖ¤ą« ąŖŖą«ąŖ°ą«ąŖŖąŖ°ą«ąŖą«ąŖ ąŖŖą«ąŖ°ąŖ¦ąŖ¾ąŖØ ąŖąŖ°ą«ą„¤ |
- ąŖ„ą«ąŖ°ą«ąŖ”-ąŖøą«ąŖ« ąŖ
ąŖØą«
ąŖøąŖ®ąŖąŖµąŖ¾ąŖ®ąŖ¾ąŖ ąŖøąŖ°ąŖ³ ąŖą«ą„¤ |
ąŖ®ąŖæąŖą«ąŖøąŖæąŖØ vs ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø vs ąŖąŖ¬ąŖøą«ąŖą«ąŖ°ąŖ¾ąŖą«ąŖ ąŖą«ąŖ²ąŖ¾ąŖø (Mixins vs Interfaces vs Abstract Classes) |
ąŖą«ąŖ” ąŖŖą«ąŖØąŖąŖąŖŖąŖÆą«ąŖ ąŖ ąŖØą« ąŖąŖ°ąŖ¾ąŖ° ąŖØąŖæąŖ°ą«ąŖ§ąŖ¾ąŖ°ąŖæąŖ¤ ąŖąŖ°ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą«ąŖØąŖ¾ ąŖµąŖæąŖµąŖæąŖ§ ąŖ°ą«ąŖ¤ą«ą„¤ |
- Mixin: Java ąŖ®ąŖ¾ąŖ
ąŖøą«ąŖ§ą« ąŖ®ąŖæąŖą«ąŖøąŖæąŖØ ąŖøąŖŖą«ąŖ°ą«ąŖ ąŖØąŖ„ą«,
ąŖŖąŖ°ąŖąŖ¤ą« ąŖ”ąŖæąŖ«ą«ąŖ²ą«ąŖ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖøąŖ¾ąŖ„ą«ąŖØąŖ¾ ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø ąŖØą«
ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤ |
ąŖąŖµąŖæąŖ·ą«ąŖÆąŖØąŖ¾ ąŖ”ąŖæąŖąŖ¾ąŖąŖØąŖØą« ąŖ²ąŖµąŖą«ąŖ ąŖ ąŖØą« ąŖąŖ¾ąŖ³ąŖµąŖ£ą«ąŖą«ąŖ·ąŖ® ąŖ¬ąŖØąŖ¾ąŖµąŖµąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖąŖæąŖØą«ąŖØąŖ¤ąŖ¾ąŖØą« ąŖøąŖ®ąŖąŖµą«ąŖ ąŖąŖ°ą«ąŖ°ą« ąŖą«ą„¤ |
- Mixins: ąŖ”ąŖæąŖ«ą«ąŖ²ą«ąŖ
ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖøąŖ¾ąŖ„ą«ąŖØąŖ¾ ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖŖą«ąŖØąŖąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą« ąŖ¶ąŖąŖ¾ąŖÆ ąŖ¤ą«ąŖµąŖ¾ ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖąŖ®ą«ąŖ°ą«ą„¤ |
ąŖµąŖ§ą« ąŖøą«ąŖąŖØą«
- DRY ąŖøąŖæąŖ¦ą«ąŖ§ąŖ¾ąŖąŖ¤ (Don't Repeat Yourself): ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø ąŖ ąŖØą« ąŖøąŖąŖÆą«ąŖąŖØąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖą«ąŖ” ąŖ”ą«ąŖŖą«ąŖ²ąŖæąŖą«ąŖ¶ąŖØ ąŖąŖ¾ąŖ³ą«ą„¤
- KISS ąŖøąŖæąŖ¦ą«ąŖ§ąŖ¾ąŖąŖ¤ (Keep It Simple, Stupid): ąŖ”ąŖæąŖąŖ¾ąŖąŖØ ąŖ ąŖØą« ąŖ ąŖ®ąŖ²ąŖ®ąŖ¾ąŖ ąŖøąŖ°ąŖ³ąŖ¤ąŖ¾ąŖØą« ąŖŖą«ąŖ°ąŖÆąŖ¤ą«ąŖØ ąŖąŖ°ą«ą„¤
- YAGNI ąŖøąŖæąŖ¦ą«ąŖ§ąŖ¾ąŖąŖ¤ (You Aren't Gonna Need It): ąŖ”ąŖæąŖąŖ¾ąŖąŖØąŖØą« ąŖąŖąŖæąŖ² ąŖ¬ąŖØąŖ¾ąŖµą«ąŖÆąŖ¾ ąŖµąŖæąŖØąŖ¾ ąŖąŖ°ą«ąŖ°ą«ąŖÆąŖ¾ąŖ¤ ąŖ®ą«ąŖąŖ¬ ąŖ«ą«ąŖąŖ°ą«ąŖøąŖØą« ąŖ ąŖ®ąŖ²ąŖ®ąŖ¾ąŖ ąŖ²ąŖ¾ąŖµą«ą„¤
- UML ąŖą«ąŖ²ą«ąŖø: UML ąŖ”ąŖ¾ąŖÆąŖą«ąŖ°ąŖ¾ąŖ®ą«ąŖø ąŖ¬ąŖØąŖ¾ąŖµąŖµąŖ¾ ąŖ®ąŖ¾ąŖą« Lucidchart, draw.io, ąŖ ąŖ„ąŖµąŖ¾ PlantUML ąŖą«ąŖµą« ąŖą«ąŖ²ą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ą„¤
- ąŖąŖ¾ąŖ·ąŖ¾-ąŖØąŖæąŖ°ą«ąŖąŖ° ąŖµąŖæąŖ¶ą«ąŖ·ąŖ¤ąŖ¾ąŖ: Java ąŖØą« OOP ąŖ§ąŖ¾ąŖ°ąŖ£ąŖ¾ąŖąŖØą« ąŖµąŖæąŖ¶ąŖæąŖ·ą«ąŖ ąŖ ąŖ®ąŖ², ąŖą«ąŖ® ąŖą« ąŖøąŖæąŖąŖąŖ² ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø, ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø ąŖąŖŖąŖÆą«ąŖ ąŖ ąŖØą« ąŖąŖą«ąŖøą«ąŖø ąŖ®ą«ąŖ”ąŖæąŖ«ąŖ¾ąŖÆąŖ°ą«ąŖø, ąŖµąŖæąŖ¶ą« ąŖąŖ¾ąŖ£ąŖąŖ¾ąŖ°ą« ąŖ°ąŖ¾ąŖą«ą„¤
ąŖøąŖ¾ąŖ®ąŖ¾ąŖØą«ąŖÆ Java OOP ąŖµąŖæąŖ¶ą«ąŖ·ąŖ¤ąŖ¾ąŖ
- ąŖąŖą«ąŖøą«ąŖø ąŖ®ą«ąŖ”ąŖæąŖ«ąŖ¾ąŖÆąŖ°ą«ąŖø: ąŖą«ąŖ²ąŖ¾ąŖø, ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖ ąŖØą« ąŖµą«ąŖ°ąŖæąŖąŖ¬ąŖ²ą«ąŖøąŖØą« ąŖ¦ą«ąŖąŖ¾ąŖµ ąŖØąŖæąŖÆąŖąŖ¤ą«ąŖ°ąŖæąŖ¤ ąŖąŖ°ą« ąŖą« (public, protected, private, ąŖ ąŖØą« ąŖ”ąŖæąŖ«ą«ąŖ²ą«ąŖ/ąŖŖą«ąŖą«ąŖ-ąŖŖą«ąŖ°ąŖ¾ąŖąŖµą«ąŖ)ą„¤
- Final ąŖą«ąŖµąŖ°ą«ąŖ”: ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø ąŖ ąŖąŖąŖ¾ąŖµą« (final ąŖą«ąŖ²ąŖ¾ąŖøąŖæąŖø), ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖąŖµąŖ°ą«ąŖ”ą«ąŖ°ąŖ¾ąŖąŖ” ąŖ„ąŖµąŖ¾ąŖØą«ąŖ ąŖ ąŖąŖąŖ¾ąŖµą« (final ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ), ąŖ ąŖØą« ąŖµą«ąŖ°ąŖæąŖąŖ¬ąŖ²ą«ąŖøąŖØą« ąŖ«ąŖ°ą«ąŖ„ą« ąŖØąŖæąŖ°ą«ąŖ§ąŖ¾ąŖ°ąŖæąŖ¤ ąŖąŖ°ąŖµąŖ¾ąŖØą«ąŖ ąŖ ąŖąŖąŖ¾ąŖµą« (final ąŖµą«ąŖ°ąŖæąŖąŖ¬ąŖ²ą«ąŖø)ą„¤
- ąŖøą«ąŖą«ąŖąŖæąŖ ąŖą«ąŖµąŖ°ą«ąŖ”: ąŖą«ąŖ²ąŖ¾ąŖø ąŖøą«ąŖ¤ąŖ°ąŖØąŖ¾ąŖ ąŖµą«ąŖ°ąŖæąŖąŖ¬ąŖ²ą«ąŖø ąŖ ąŖØą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖąŖØą« ąŖµą«ąŖÆąŖ¾ąŖą«ąŖÆąŖ¾ąŖÆąŖæąŖ¤ ąŖąŖ°ą« ąŖą« ąŖą« ąŖą«ąŖ²ąŖ¾ąŖø ąŖøąŖ¾ąŖ„ą« ąŖą«ąŖ”ąŖ¾ąŖÆą«ąŖ²ąŖ¾ ąŖ¹ą«ąŖÆ ąŖą« ąŖ ąŖØą« ąŖą«ąŖ ąŖąŖ¬ą«ąŖą«ąŖą«ąŖ ąŖøąŖ¾ąŖ„ą« ąŖØąŖ¹ą«ąŖą„¤
- ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖø vs ąŖąŖ¬ąŖøą«ąŖą«ąŖ°ąŖ¾ąŖą«ąŖ ąŖą«ąŖ²ąŖ¾ąŖø: ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ąŖ¾ąŖ° ąŖØąŖæąŖ°ą«ąŖ§ąŖ¾ąŖ°ąŖæąŖ¤ ąŖąŖ°ąŖµąŖ¾ ąŖ ąŖØą« ąŖ¬ąŖ¹ą«ąŖµąŖæąŖ§ ąŖµąŖ°ą«ąŖ¤ąŖØą«ąŖØą« ąŖŖą«ąŖ°ąŖ¦ąŖ¾ąŖØ ąŖąŖ°ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖąŖ°ą«; ąŖąŖ¬ąŖøą«ąŖą«ąŖ°ąŖ¾ąŖą«ąŖ ąŖą«ąŖ²ąŖ¾ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖøąŖ¾ąŖ®ąŖ¾ąŖØą«ąŖÆ ąŖąŖ§ąŖ¾ąŖ° ąŖąŖ¾ąŖ°ą«ąŖÆąŖą«ąŖ·ąŖ®ąŖ¤ąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖąŖ°ą« ąŖą«ąŖ®ąŖ¾ąŖ ąŖą«ąŖąŖ²ą«ąŖ ąŖ ąŖ®ąŖ² ąŖ¹ą«ąŖÆą„¤
- ąŖąŖØą«ąŖą«ąŖ¶ąŖØą«ąŖø: @Override, @Deprecated ąŖ ąŖØą« ąŖąŖøą«ąŖąŖ® ąŖąŖØą«ąŖą«ąŖ¶ąŖØą«ąŖø ąŖą«ąŖµąŖ¾ ąŖąŖØą«ąŖą«ąŖ¶ąŖØą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖ®ą«ąŖąŖ¾ąŖ”ą«ąŖąŖ¾ ąŖŖą«ąŖ°ąŖ¦ąŖ¾ąŖØ ąŖąŖ°ą« ąŖ ąŖØą« ąŖµąŖ°ą«ąŖ¤ąŖØąŖØą« ąŖŖą«ąŖ°ąŖąŖ¾ąŖµąŖæąŖ¤ ąŖąŖ°ą«ą„¤
ąŖøąŖ¾ąŖ®ąŖ¾ąŖØą«ąŖÆ Java OOP ąŖ²ąŖ¾ąŖąŖ¬ą«ąŖ°ą«ąŖ°ą«ąŖ ąŖ ąŖØą« ąŖ«ą«ąŖ°ą«ąŖ®ąŖµąŖ°ą«ąŖą«ąŖø
- Spring Framework: ąŖ”ąŖæąŖŖą«ąŖØą«ąŖ”ą«ąŖąŖøą« ąŖąŖØą«ąŖą«ąŖą«ąŖ¶ąŖØ, ąŖąŖøąŖŖą«ąŖą«ąŖ-ąŖąŖ°ąŖæąŖąŖØą«ąŖą«ąŖ” ąŖŖą«ąŖ°ą«ąŖą«ąŖ°ąŖ¾ąŖ®ąŖæąŖąŖ ąŖ ąŖØą« ąŖµąŖ§ą« ąŖ®ąŖ¾ąŖą« ąŖµą«ąŖÆąŖ¾ąŖŖąŖ ąŖøąŖŖą«ąŖ°ą«ąŖ ąŖąŖŖą« ąŖą«ą„¤
- Hibernate: Java ąŖąŖŖą«ąŖ²ąŖæąŖą«ąŖ¶ąŖØą«ąŖøąŖ®ąŖ¾ąŖ ąŖ°ąŖæąŖ²ą«ąŖ¶ąŖØąŖ² ąŖ”ą«ąŖąŖ¾ąŖØą« ąŖ®ą«ąŖØą«ąŖ ąŖąŖ°ąŖµąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖąŖ¬ą«ąŖą«ąŖą«ąŖ-ąŖ°ąŖæąŖ²ą«ąŖ¶ąŖØąŖ² ąŖ®ą«ąŖŖąŖæąŖąŖ (ORM) ąŖŖą«ąŖ°ąŖ¦ąŖ¾ąŖØ ąŖąŖ°ą« ąŖą«ą„¤
- Apache Commons: ąŖŖą«ąŖØąŖąŖąŖŖąŖÆą«ąŖą« Java ąŖąŖąŖą« ąŖ ąŖØą« ąŖÆą«ąŖąŖæąŖ²ąŖæąŖą«ąŖąŖØą«ąŖ ąŖøąŖąŖą«ąŖ°ąŖ¹ą„¤
- JUnit: Java ąŖąŖŖą«ąŖ²ąŖæąŖą«ąŖ¶ąŖØą«ąŖø ąŖ®ąŖ¾ąŖą« ąŖÆą«ąŖØąŖæąŖ ąŖą«ąŖøą«ąŖąŖæąŖąŖ ąŖøą«ąŖµąŖæąŖ§ąŖ¾ ąŖąŖŖą« ąŖą«ą„¤
- Lombok: ąŖąŖØą«ąŖą«ąŖ¶ąŖØą«ąŖø ąŖ¦ą«ąŖµąŖ¾ąŖ°ąŖ¾ ąŖą«ąŖąŖ°ą«ąŖø, ąŖøą«ąŖąŖ°ą«ąŖø, ąŖąŖØą«ąŖøą«ąŖą«ąŖ°ąŖą«ąŖąŖ°ą«ąŖø ąŖ ąŖØą« ąŖµąŖ§ą«ąŖØą« ąŖąŖØąŖ°ą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖ¬ą«ąŖąŖ²ąŖ°ąŖŖą«ąŖ²ą«ąŖ ąŖą«ąŖ” ąŖąŖąŖ¾ąŖ”ą« ąŖą«ą„¤
ąŖ¶ą«ąŖ°ą«ąŖ·ą«ąŖ ąŖŖą«ąŖ°ąŖ„ąŖ¾ąŖ (Best Practices)
- ąŖ«ą«ąŖ²ą«ąŖ”ą«ąŖøąŖØą« ąŖąŖØą«ąŖą« ąŖŖą«ąŖøą«ąŖÆą«ąŖ²ą«ąŖ ąŖąŖ°ą«: ąŖ¹ąŖąŖ®ą«ąŖ¶ąŖ¾ąŖ ąŖą«ąŖ²ąŖ¾ąŖø ąŖ«ą«ąŖ²ą«ąŖ”ą«ąŖøąŖØą« ąŖąŖ¾ąŖØąŖą« ąŖ°ąŖ¾ąŖą« ąŖ ąŖØą« ąŖąŖ°ą«ąŖ°ą«ąŖÆąŖ¾ąŖ¤ ąŖ®ą«ąŖąŖ¬ ąŖąŖ¾ąŖ¹ą«ąŖ° getter ąŖ ąŖØą« setter ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæąŖ ąŖŖą«ąŖ°ąŖ¦ąŖ¾ąŖØ ąŖąŖ°ą«ą„¤
- ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø ąŖąŖ°ąŖ¤ąŖ¾ąŖ ąŖøąŖąŖÆą«ąŖąŖØąŖØą« ąŖŖą«ąŖ°ąŖ¾ąŖ§ąŖ¾ąŖØą«ąŖÆ ąŖąŖŖą«: ąŖąŖØąŖ¹ą«ąŖ°ąŖæąŖąŖØą«ąŖø ąŖŖąŖ° ąŖµąŖ§ąŖ¾ąŖ°ą« ąŖąŖ§ąŖ¾ąŖ° ąŖ°ąŖ¾ąŖą«ąŖÆąŖ¾ ąŖµąŖæąŖØąŖ¾ ąŖµąŖ§ą« ąŖŖą«ąŖØąŖąŖąŖŖąŖÆą«ąŖą« ąŖąŖąŖą«ąŖ®ąŖ¾ąŖąŖ„ą« ąŖą«ąŖ²ąŖ¾ąŖøąŖæąŖøąŖØą« ąŖ ąŖøą«ąŖ®ą«ąŖ¬ąŖ² ąŖąŖ°ą«ą„¤
- ąŖ ąŖ¬ą«ąŖøą«ąŖą«ąŖ°ą«ąŖą«ąŖ¶ąŖØ ąŖ®ąŖ¾ąŖą« ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«: ąŖąŖØą«ąŖąŖ°ąŖ«ą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖµąŖ°ą«ąŖ¤ąŖØą«ąŖØą« ąŖµą«ąŖÆąŖ¾ąŖą«ąŖÆąŖ¾ąŖÆąŖæąŖ¤ ąŖąŖ°ą« ąŖą«ąŖ„ą« ąŖ¬ąŖ¹ą«ąŖµąŖæąŖ§ ąŖ ąŖ®ąŖ² ąŖ ąŖØą« ąŖ²ąŖµąŖą«ąŖąŖ¤ąŖ¾ ąŖµąŖ§ą«ą„¤
- SOLID ąŖøąŖæąŖ¦ą«ąŖ§ąŖ¾ąŖąŖ¤ą«ąŖØą«ąŖ ąŖŖąŖ¾ąŖ²ąŖØ ąŖąŖ°ą«: SOLID ąŖøąŖæąŖ¦ą«ąŖ§ąŖ¾ąŖąŖ¤ą«ąŖØą« ąŖ ąŖØą«ąŖøąŖ°ą« ąŖąŖ¾ąŖ³ąŖµąŖ£ą«ąŖą«ąŖ·ąŖ® ąŖ ąŖØą« ąŖøą«ąŖą«ąŖ²ą«ąŖ¬ąŖ² ąŖøą«ąŖ«ą«ąŖąŖµą«ąŖ° ąŖ”ąŖæąŖąŖ¾ąŖąŖØą«ąŖø ąŖ¬ąŖØąŖ¾ąŖµąŖµąŖ¾ ąŖ®ąŖ¾ąŖą«ą„¤
- ąŖ”ąŖæąŖąŖ¾ąŖąŖØ ąŖŖą«ąŖąŖ°ą«ąŖØą«ąŖøąŖØą« ąŖ²ąŖ¾ąŖ ąŖ²ą«: ąŖÆą«ąŖą«ąŖÆ ąŖ”ąŖæąŖąŖ¾ąŖąŖØ ąŖŖą«ąŖąŖ°ą«ąŖØą«ąŖøąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«ąŖØą« ąŖøąŖ¾ąŖ®ąŖ¾ąŖØą«ąŖÆ ąŖ”ąŖæąŖąŖ¾ąŖąŖØ ąŖøąŖ®ąŖøą«ąŖÆąŖ¾ąŖąŖØą« ąŖ ąŖøąŖ°ąŖąŖ¾ąŖ°ąŖ ąŖ°ą«ąŖ¤ą« ąŖąŖą«ąŖ²ą«ą„¤
- ąŖøąŖ¾ąŖ« ąŖ ąŖØą« ąŖµąŖ¾ąŖąŖąŖØąŖą«ąŖ·ąŖ® ąŖą«ąŖ” ąŖ²ąŖą«: Java ąŖØąŖ¾ąŖ®ąŖąŖ°ąŖ£ ąŖ§ą«ąŖ°ąŖ£ą«ąŖØą«ąŖ ąŖŖąŖ¾ąŖ²ąŖØ ąŖąŖ°ą«, ąŖ ąŖ°ą«ąŖ„ąŖŖą«ąŖ°ą«ąŖ£ ąŖµą«ąŖ°ąŖæąŖąŖ¬ąŖ² ąŖ ąŖØą« ąŖŖąŖ¦ą«ąŖ§ąŖ¤ąŖæ ąŖØąŖ¾ąŖ®ą«ąŖØą« ąŖąŖŖąŖÆą«ąŖ ąŖąŖ°ą«, ąŖ ąŖØą« ąŖøą«ąŖŖąŖ·ą«ąŖąŖ¤ąŖ¾ ąŖ®ąŖ¾ąŖą« ąŖ¤ąŖ®ąŖ¾ąŖ°ąŖ¾ ąŖą«ąŖ”ąŖØą« ąŖ¦ąŖøą«ąŖ¤ąŖ¾ąŖµą«ąŖą«ąŖą«ąŖ¤ ąŖąŖ°ą«ą„¤
Java ąŖ®ąŖ¾ąŖ ąŖØąŖ®ą«ąŖØąŖ¾ ąŖŖą«ąŖ°ą«ąŖą«ąŖą«ąŖ ąŖøą«ąŖą«ąŖ°ąŖą«ąŖąŖ° (Sample Project Structure in Java)
plaintext
Comments
Post a Comment