logo
down
shadow

Prevent breaking encapsulation


Prevent breaking encapsulation

By : user2953576
Date : November 21 2020, 01:01 AM
like below fixes the issue As you might have seen from the other answers and comments, the answer is: It depends.
In fact, it depends mainly on the usecases where your class is used. Let's stick first to the example given in the question, the comparison of objects. Since it is not clearly visible from the question if we want to compare two phone objects or just a specific data member I will discuss both situations here.
code :
for (Phone& p in phoneList) {
    if (p.getWeight() > x) {
        cout << "Found";
    }
}
class Phone {
private:
    string producer, color;
    int weight, dimension;
public:
    bool IsEqualTo(const Phone& other)
    {
        return (producer == other.producer && color == other.color &&....);
    }
class Phone
{
private:
    int pin;
    bool unlocked;

public:
    int getPin() { return pin; }
    void unlock() { unlocked = true; }
};
if (phone.getPin() == enteredPin)
    phone.unlock();
class Phone
    {
    private:
        int pin;
        bool unlocked;

    public:
        void CheckPin(int enteredPin) {
            if (pin == enteredPin)
               unlocked = true;
        }
    };
phone.CheckPin(enteredPin);


Share : facebook icon twitter icon
Isn't Xaml breaking my encapsulation?

Isn't Xaml breaking my encapsulation?


By : Locitus
Date : March 29 2020, 07:55 AM
With these it helps I'm not really sure what you're saying. You can make the Button in XAML and have it be private as well:
code :
<Button x:FieldModifier="private" x:Name="Whatever" Content="This is a button" />
Rendering without breaking encapsulation

Rendering without breaking encapsulation


By : Gayathri S
Date : March 29 2020, 07:55 AM
I wish this help you The easiest way would be to pass off value structure to your template renderer. This will keep you from being tempted to doing too much logic within the template itself.
For example - First off create an interface for your renderable classes
code :
class Renderable {
     public function getViewData();
}
class Student implements Renderable{

    private $id;
    private $name;

    /**
     * Courses student is attending
     * @var Course[]
     */
    private $courses = array();
    private $numberOfAttendingCourses;
    public function getViewData(){
        $dat = array("id"=>$this->id, "name"=>$this->name, "courses"=>array());
        foreach($this->courses as $course){
            $dat["courses"][] = $course->getViewData();
        }
        $dat["numCourses"] = count($dat["courses"]);
        return $dat;
    }

}

class Course implements Renderable{

    private $code;
    private $name;

    public function fetchViewData(){
        return array("code"=>$this->code,
                     "name"=>$this->name);
    }
}
class Template {
     public function render($templateFile, array $data){
          if ($data instanceof Renderable){
               $data = $data->getViewData();
          }
          extract ($data);
          ob_start();
          include($templateFile);
          ob_get_clean();
     }
}
<ul>
    <li><?= htmlspecialchars($name) ?> (ID: <?= htmlspecialchars($id) ?>)
        <ul>
            <?php foreach($courses as $course): ?>
            <li><?= htmlspecialchars($course["code"]) ?> (<?= htmlspecialchars($course["code"]) ?>)</li>
            <?php endforeach; ?>
        </ul>
    </li>
</ul>
$template = new Template();
$template->render("/path/to/template.phtml", $student->fetchViewData());
Inheritance breaking encapsulation?

Inheritance breaking encapsulation?


By : JS2014
Date : March 29 2020, 07:55 AM
will be helpful for those in need Yes. Since it gives the derived class access to members of the base class (depending on what language and which kind of inheritance) it is said that it breaks encapsulation. IMHO this is only if you are clinging to encapsulation in the strictest terms. IMHO it is reasonable to say that you are accepting the derived class as an extension of the base and therefore related in some way and not really breaking the encapsulation. Purists will disagree with this.
Take a look at http://www.ccs.neu.edu/research/demeter/papers/context-journal/node17.html and search for "breaks" for an academic explanation.
Why does this breaking of encapsulation work in C++?

Why does this breaking of encapsulation work in C++?


By : fshapps
Date : March 29 2020, 07:55 AM
To fix the issue you can do There is no breaking of encapsulation: your method is public on X, and an object of class Y "is also" of type X when you use public inheritance.
Overriding in C++ is orthogonal to access rules. You can override a public method with a private method. It is probably bad design, since you can always call it via a reference to the base class.
Breaking encapsulation in C++

Breaking encapsulation in C++


By : jhunter
Date : March 29 2020, 07:55 AM
To fix the issue you can do I would say that friend does not break encapsulation. See https://isocpp.org/wiki/faq/Friends#friends-and-encap
Now let's ignore the issue of what "encapsulation" actually means. It is generally possible to access private members using a template specialization hack. The basic idea, for when the class has a member template, is explained in http://www.gotw.ca/gotw/076.htm.
Related Posts Related Posts :
  • What is the purpose of name mangling in C++?
  • C++ Why the void function is not working eventhough I called it?
  • How the pointer and the pointer's adress can share the same memory adress?
  • error C2220: warning treated as error - no 'object' file generated
  • exception of strcpy function in c++ console program
  • How to access USB barcode scanner data directly from USB port using C/C++ without driver
  • Under which circumstances will std::vector.clear() call a destructor?
  • Template partial specialisation and dependent names
  • best way to share data between c codes
  • C++ ignores if statement conditions
  • How to set the argv[ ] to be case-insensitive in a Win32 Console Application?
  • How to fix error "clang: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)"?
  • C++ How do I print a .txt file verbatim?
  • Creating two dimensional array of class
  • How do I correctly use COMMTIMEOUTS with OVERLAPPED IO mode reading from a Serial port
  • An assert macro which expands to static_assert when possible?
  • How to write a copyconstructor for a class which has HANDLE as a member in win32 c++ application?
  • C++ saving info such as tree in a file
  • Transforming an expression template tree
  • How to overload an operator with multiple parameters like a + b + c?
  • C++ 11 with Raspberry Pi performances
  • Make a C++ class look like a numpy array using swig
  • Postfix incrementer overloading for nested enumerated types
  • Is there a tidy way of associating metadata with functions in C++
  • QObject::installEventFilter(): Cannot filter events for objects in a different thread
  • LNK2005 error with Zxing C++
  • C++ Doubly Linked List with Pointers: Object of class isn't constructed properly
  • Using a random string generator in c++ constructor
  • What should I use instead of void as one of the alternative types in an variant?
  • C++ return value from multithreads using reference
  • How to connect multiple TCP IP clients to same server port using c++
  • Defaul compiler generates the reference operator (In C++)?
  • Unable to change directory time stamp after using FILE_FLAG_BACKUP_SEMANTICS
  • vector handling displaying output
  • WSAGetLastError returns WSAENOTSOCK - Cause?
  • C++: How to overload pow for user type?
  • C++ using arrays as multidimensional despite initalising it as 1D with pointer
  • How negate std::is_integral for use in tag dispatch?
  • Retrieve serial number from USB memory (Windows environment c++)
  • g++ error: invalid preprocessing directive #INCLUDE
  • C++ What is the std::for_each() function parameter type?
  • C++: Read individual lines from text file, sort words alphabetically
  • Saving 'this' address into a variable
  • c++ command line arguments in ubuntu terminal
  • Convert "Cartesian coordinates" to "polar coordinates with respect to user specified origin"
  • In what order are local scoped objects destructed?
  • How to use SDL_MapRGB with SDL 2.0
  • how compiler and interpreter work in case of array declaration
  • GSL integration behaves strange
  • Cropping an image with OpenCV and C
  • Find the last line in text file and select the first 10 char and print to a new file?
  • Created many CCSprits but when triggering ccTouchBegan gives the last one allways
  • seekp and seekg don't work with fstream
  • Taking input in Sublime Text 3
  • ld: -bind_at_load and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together
  • C++ storing #define as std::string would give size as zero compile time
  • How to use static linking with OpenSSL in C/C++
  • What is the difference between a trap, an error, a failure and program abortion?
  • Dynamic members allocation in qt
  • How to reduce object file size when compiling for VxWorks 5.5.1?
  • shadow
    Privacy Policy - Terms - Contact Us © ourworld-yourmove.org